domingo, 10 de febrero de 2008

Ligas, grep y strings

Aquí les dejo como hacer una busqueda de alguna cadena mediante grep y con crear una liga suave, que no esta de más tenerla siempre a la mano.
Bueno comencemos con la liga, para crear una liga solo necesitamos ejecutar el siguiente comando:

ln -s archivo_fuente nombre de liga, ejemplo:
rooter@rooterlap:~/prueba$ touch b.txt
rooter@rooterlap:~/prueba$ ln -s b.txt c.txt

Con esto hemos creado una liga llamada c.txt que apunta hacia b.txt
rooter@rooterlap:~/prueba$ ls -l
total 20
-rw-r--r-- 1 rooter users 101 2008-01-05 23:33 Hola.java~
-rw-r--r-- 1 rooter users 0 2008-02-10 23:14 a.txt
-rw-r--r-- 1 rooter users 0 2008-02-10 23:14 b.txt
-rw-r--r-- 1 root root 0 2007-12-25 14:14 bit.txt
lrwxrwxrwx 1 rooter users 5 2008-02-10 23:15 c.txt -> b.txt
-rw-r--r-- 1 root root 413 2008-01-06 00:55 hola.class
-rw-r--r-- 1 rooter users 115 2008-01-06 00:55 hola.java
-rw-r--r-- 1 root root 133 2008-01-06 00:31 hola.java~
drwxr-xr-x 2 rooter users 4096 2007-12-17 15:49 homie/
-rw-r--r-- 1 rooter users 0 2007-12-25 14:40 php.txt
-rw-r--r-- 1 root root 0 2007-12-25 14:15 shellcode.txt

Ahora busquemos con grep:
Si tenemos muchos archivos y queremos encontrar alguna cadena, para saber en que archivo está utilicen el comando grep con el cúal es rápido y eficiente.
Por ejemplo en mi caso lo utilizaremos para ver en que archivos de los listados anteriormente contiene la cadena main.

rooter@rooterlap:~/prueba$ grep -H main ./*
./Hola.java~: public static void main(String[] args) {
Binary file ./hola.class matches
./hola.java: public static void main(String [] args) {
./hola.java~: public static void main(String [] args) {

Como se puede observar nos menciona en que archivo encuentra la cadena, lo cúal es muy útil para ya no buscar archivo por archivo.

Por ultimo finalizaremos con el comando strings el cúal nos muestra las cadenas o mensajes imprimibles en los archivos binarios.

Aquí en mi ejemplo, les muestro el resultado de aplicarlo a una aplicación de java (hola.class)

rooter@rooterlap:~/prueba$ strings hola.class
Êþº¾

Code
LineNumberTable
main
([Ljava/lang/String;)V
SourceFile
hola.java
Hello world
hola
java/lang/Object
java/lang/System
Ljava/io/PrintStream;
java/io/PrintStream
println
(Ljava/lang/String;)V

Esto para que nos sirve, podemos analizar distintos binarios, un ejemplo es en caso de los virus se puede buscar las cadenas imprimibles sin ni siquiera ejecutarlo.
Creo que es todo por el momento: Solo descubriendo la seguridad obtendremos la libertad tan anhelada.

No hay comentarios: