Esta será una pequeña serie de publicaciones donde enseñaré a fabricar retos, no habrá un tiempo específico entre cada publicación y serán acerca de retos que he realizado, tanto de esta página como de otras.
Empezaré con el reto #1: "Encuentra el mensaje" de los retos Sinfocol. Si no haz leido el problema que plantea el reto y su solución, te recomiendo que le eches un vistazo en este link: Solución Reto #1: Esteganografía con bit menos significativo (Esta lectura es esencial para entender el fundamento de la esteganografía con bit menos significativo)
Las herramientas Microsoft Paint
Los pasos Escogemos un texto cualquiera, en el cual ocultaremos el mensaje. En este ejemplo elegimos el texto "club colombia" Escogemos dos colores, pueden ser mas pero la programación sería un poquito mas complicada. Escogemos por lo tanto el color verde y el negro. Primero abrimos paint desde "inicio->ejecutar->mspaint[enter]" Pintamos el fondo negro (Primer color) con la herramienta "Relleno de color" alias el bote de pintura Con la herramienta "Texto", copiamos el mensaje, este mensaje contendrá el mensaje que queremos esconder, por ejemplo para el texto "club colombia", algunas palabras que podemos encontrar dentro del texto elegido son: "cia", "cumbia", "cuba", "loma", "bolo". Al copiar el mensaje nos aseguramos que en las opciones del texto, el fondo sea transparente y no blanco como aparece por defecto. Nos dirigimos a la barra donde está el menú del programa, elegimos la opción "Colores" y luego "Modificar colores", allí vemos la siguiente opción:
Vemos que no hay muchos colores para elegir, así que damos clic en "Definic colores personalizados >>" Vemos como en esta nueva ventana aparecen una serie de colores que podemos elegir
Si recordamos, en la solución al primer reto, expliqué como para el ojo del ser humano es imposible distinguir diferencias en los colores de los pixeles. El color se forma apartir del rojo, verde y azul, tal cual lo vemos en la imagen (Lado inferior izquierdo), así que aprovechamos esta ventaja y aumentamos el valor de uno de los colores, ya sea rojo o azul, o decrementamos el verde una unidad. Yo opte por la segunda opción, ahora vemos el cambio. En este momento el color no será verder (00ff00) sino un color casi verde (00fe00).
Luego damos en "Aceptar", y ahora la parte mas emocionante de todas! esconder el mensaje Esconderé la palabra "cumbia" dentro del texto "club colombia", para esto usaré la herramienta "Lápiz" para dibujar un pequeño pixel sobre las letras que me interesan, procedemos a dar clic sobre las letras "C" y "U" de la palabra "Club" y sobre la "M", "B", "I", y "A" de la palabra Colombia.
Es todo, ahora guardamos la imagen y nos queda así:
Si observamos muy bien, NO podemos notar la diferencia de colores, pero ahora sabemos que la imagen se compone de negro (000000), verde (00ff00) y un casi verde (00fe00).
Si utilizamos el script de la solución del primer reto (Claro está que modificado), podemos ver la siguiente salida.
Al sobreponer los puntos sobre la imagen original podemos ver claramente como se dibuja el texto escondido "cumbia" en la palabra "club colombia"
Se me ha ocurrido elaborar un script que haga todo automáticamente, así que pronto lo elaboraré y lo publicaré acá mismo!
"yEnc es un nuevo método de codificación que ofrece transmisión eficiente y adecuada para los binarios en Usenet (O por correo electrónica y otras aplicaciones). Otros métodos de codificación son Base64, BinHex, Uuencode.
yEnc no es un formato de audio (Como MP3), video (Como AVI, MOV, ...) o imagen (Como GIF o JPEG).
Las transferencias de noticias y correos electrónicos requieren que los binarios adjuntos sean codificados antes de ser enviados. Y son decodificados luego de que han sido recibidos. Normalmente todo esto es hecho por tú lector de noticias (O un programa de mail). No lo ves, es mas, la mayoría no lo sabe.
La codificación es necesaria porque los métodos especiales para transferir noticias y correos (Protocolos) lo requieren. Un mensaje con un binario que no ha sido codificado es dañado durante la transmisión o la transmisión es denegada totalmente.
Transportar mensajes por noticias o correo electrónico fue restringido a carácteres US-ASCII cuando los protocolos fueron escritos (20 años atrás). Estos servicios han sido creados para transportar solo texto plano. Carácteres especiales (Carácteres de control, símbolos, carácteres no imprimibles) estaban prohibidos y eran usados para propósitos especiales. Pero las personas quisieron enviar también adjuntos binarios por las noticias y correos electrónicos, fue así que algunos 'trucos' fueron implementados: El binario era cambiado a "carácteres ASCII permitidos" antes de la transmisión (Codificación) y luego al binario luego de la transmisión (Decodificación). Los métodos de codificación aún respetan esas viejas limitaciones y son usados en todas partes.
Desafortunadamente hay un precio por esos 'trucos': La codificación hace a un mensaje mas grande. Y no solo un poco, sino 33%-40% mas grandes que el adjunto original. Esto resulta en 33%-40% mas carácteres para el mensaje, 33%-40% mas tiempo de transmisión y 33%-44% mas de espacio en el disco duro donde los mensajes son almacenados.
Mientras tanto, Usenet es capáz de transmitir más que carácteres ASCII permitidos, también podría transportar otros carácteres. Sólo unos pocos carácteres especiales aún están prohibidos. Desafortunadamente las codificaciónes nunca cambiaron. Nosotros seguimos usando BASE64, BinHex, UUencode. Todos desperdiciamos todos los días el ancho de banda, tiempo, espacio de disco duro y dinero.
yEnc es ahora una propuesta de método de codificación que utiliza el hecho de que los servidores de noticias pueden transportar hoy en día binarios mas eficiente. Con los correos electrónicos, la situación es un poco mas complicada porque hay un montón de viejos programas y computadores implicados. Pero también habrán potencial para ahorrar."
Extraido de http://www.yenc.org/whatis.htm
Actualizado: Resumen del análisis de frecuencia y reto para el lector.
Esta es la resolución no oficial del reto Crypto Badness 100 de las clasificatorias para "Captura la bandera" de la DefCon
Al ingresar a este reto nos muestran el siguiente texto: ASI JL DUJZTED SA J EJZD JVV NBTODI, VDD FOD AHB VBFD: OFFT://YYY.AHB.MSK/TJMD2/CDN08/NSCD_122908.OFZE, PSQD GSW MWDVV? LS, JNFWJE AHB RWBX.
En este texto podemos observar lo que parece ser una HTTP URL "OFFT://YYY.AHB.MSK", y su respectivo recurso "/TJMD2/CDN08/NSCD_122908.OFZE", así que deducimos que se trata de una cifrado por sustitución simple, quiere decir que cada letra del alfabeto se sustituye por otra única letra del alfabeto.
Empezamos con un análisis de frecuencias común y corriente, extraemos las frecuencias en que aparecen los carácteres en el cifrado, y las comparamos con frecuencias ya realizadas, así que el carácter con mayor frecuencia en el texto que nos dieron, lo reemplazamos con el carácter con mayor frecuencia en el inglés (Inglés porque en todos los retos se vió este idioma)
El cliente se compone por ahora de cinco archivos, dos de ellos que son solo para demostrar el funcionamiento del cliente (ircCli.php, ircWeb.php), Cliente.php, ClienteBasico.php y el archivo IrcParser.php.
El código fuente de los cinco archivos puede ser descargado de acá: TheWalrusBot Cliente IRC, cada archivo tiene comentado sus funciones y lo que hace precisamente, recomiendo usar Cliente.php ya que este contiene implementado la mayoría de mensajes del protocolo (Algunas con funcionalidad), mientras que ClienteBasico.php como su nombre lo indica, es lo básico del protocolo, no tiene conexión y no responde a PING.
El siguiente video muestra como, a través de programas, podemos detectar fácilmente comportamientos inusuales en los procesos.
El ejecutable fue descargado de un link proporcionado en Youtube, afirmando que tal programa era totalmente bueno, pueden mirarlo directamente acá: http://www.youtube.com/watch?v=A4mrt9asiIc&feature=related
Más información sobre los programas utilizados
Sysinternals Suite: Contiene los siguientes programas: AccessChk,AccessEnum,AdExplorer,AdRestore,Autologon,Autoruns,BgInfo,CacheSet
ClockRes,Contig,Coreinfo,Ctrl2Cap,DebugView,Desktops,DiskExt,DiskMon,DiskView
DiskUsage(DU),EFSDump,FileMon,Handle,Hex2dec,Junction,LDMDump,ListDLLs,LiveKd
LoadOrder,LogonSessions,NewSid,NTFSInfo,PageDefrag,PendMoves,PipeList,PortMon
ProcessExplorer,Proces Monitor,ProcFeatures,PsExec,PsFile,PsGetSid,PsInfo,PsKill
PsList,PsLoggedOn,PsLogList,PsPasswd,PsService,PsShutdown,PsSuspend,RegDelNull
RegJump,RegMon,RootkitRevealer,SDelete,ShareEnum,ShellRunas,SigCheck,Streams
Strings,Sync,TCPView,VMMap,VolumeID,WhoIs,WinObj,ZoomIt.
He usado los siguientes programas: DiskMon, EFSDump, FileMon, PortMon, Process Explorer, Process monitor, PsExec, RegMon, Rootkit Reavealer, y TCPView, y los recomiendo bastante, son muy útiles, ya cada uno verá el funcionamiento de cada ejecutable.
El link de descarga es el siguiente: http://technet.microsoft.com/en-us/sysinternals/bb842062.aspx
Gracias a Trancek por el aporte.
Smsniff: Es un programa para capturar los paquetes enviados por nuestra red, así podemos observar si se están enviando datos sobre nuestra computadora a un servidor. Puede ser descargado de: http://www.nirsoft.net/utils/smsniff.html
Process Explorer: Es un potente programa que explora los procesos, y nos muestra información acerca de quién maneja los procesos y las DLLs que han sido abiertas o cargadas. Es muy útil en el momento de vigilar el proceso del cual sospechamos, ya que a menudo tiene a abrir otros procesos, los cuales contienen el verdadero virus. Puede ser descargado de la página de Microsoft: http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx