Terminal Hacking I - Conociendo la Shell

No Comments
Comenzamos hace mas de una semana la serie Terminal Hacking, y porque no iniciar el año ahora toca ver Conociendo la Shell quizás para algunos sea demasiado básico o algo tonta pero como dije con anterioridad el objetivo es dar e iniciar a los demás en el mundo de la Terminal.

Lo que veremos es:
  • La ayuda que no ayuda - The man pages.
  • Navegando y buscando en el mundo oscuro.
                - Navegación de directorios
                - Listando y formando directorios.
                - Búsqueda del tesoro perdido.
  • Dirección y re-dirección 
  • Tuberías
Comencemos.... 

La ayuda que no ayuda - The man pages.

La ayuda que no ayuda, si la man pages porque tiene este nombre? es debido a que a algunos no les agrada la lectura y aun mas al ver el man les viene un dolor de cabeza pero no es así señores, mas todo lo contrario el man pages brinda la ayuda y el conocimiento sobre una herramienta muy aparte de realizar un tutorial de ls, cd o dir debido a que con las "man pages" obtenemos lo necesario.

La forma de uso es simple con los siguientes comandos.

snifer@rizel$ man [numero de sección]  [Nombre de la página a visualizar] 


[Número de sección]: Es el número de página a visualizar si ella consta de varias páginas.
[Nombre de la página a visualizar]: Se refiere al nombre de la aplicación o comando que se desee ver la ayuda respectiva.

Como ejemplo realizaremos del comando ls listado de directorios.

snifer@rizel:$ man 1 ls

Lo que nos devuelve es lo siguiente:

LS(1)                                                                      User Commands                                                                      LS(1)

NAME
       ls - list directory contents

SYNOPSIS
       ls [OPTION]... [FILE]...

DESCRIPTION
       List information about the FILEs (the current directory by default).  Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.

       Mandatory arguments to long options are mandatory for short options too.

       -a, --all
              do not ignore entries starting with .

       -A, --almost-all
              do not list implied . and ..

       --author
              with -l, print the author of each file

       -b, --escape
              print C-style escapes for nongraphic characters

       --block-size=SIZE
              scale sizes by SIZE before printing them; e.g., '--block-size=M' prints sizes in units of 1,048,576 bytes; see SIZE format below

       -B, --ignore-backups
              do not list implied entries ending with ~

       -c     with  -lt:  sort by, and show, ctime (time of last modification of file status information); with -l: show ctime and sort by name; otherwise: sort by
              ctime, newest first

       -C     list entries by columns

       --color[=WHEN]
              colorize the output; WHEN can be 'never', 'auto', or 'always' (the default); more info below

       -d, --directory
              list directories themselves, not their contents

       -D, --dired
              generate output designed for Emacs' dired mode

       -f     do not sort, enable -aU, disable -ls --color

Verán que tras realizar el man, tenemos un resultado bastante elaborado por lo cual a veces uno puede llegar a marearse aún mas si es la primera vez que accedemos a ella.Para simplificar un poco este detalle variado iremos un poco mas a fondo,un man pages cuenta con una estructura es decir como un contenido previamente definido el cual es:


  • Name. (Nombre del comando o función que se quiere observar.)
  • Synopsis. (Descripción formal de lo que hace el comando o función.)
  • Description. (Descripción informal de lo que hace el comando o función.)
  • Examples. (Una colección de ejemplos con el uso del comando o función.)
  • See Also. (Referencias a sitios web, u otros man pages.)
Navegando y buscando en el mundo oscuro.



Es necesario conocer y saber los comandos de búsqueda y navegación en Linux porque, tras realizar una intrusión, o acceder a un servidor de manera remota solo se tiene acceso a un prompt (terminal) para lo cual es necesario navegar por los directorios y buscar debidamente, para ello es necesario conocer los comandos básicos a continuación veremos cuales son.
ComandoNombre del comandoUso
cdCambio de directorioCambiar de directorio de trabajo.
lsListado de directorio Listar el contenido del directorio actual.
pwd Directorio actual de trabajo Muestra la ubicación actual donde uno se encuentra.
find BúsquedaBúsqueda, localización de archivos, en base al nombre o por medio de sus atributos

Navegación de Directorios

La navegación de los directorios es comúnmente usada, el comando que nos permite este cometido es cd, lo cual nos permite navegar de un directorio a otro, sin necesidad de volver al padre, siendo este mas simple y sencillo su uso.

snifer@rizel:$ cd /

Con el comando cd / lo que hace es ir al directorio principal "root", en el cual se encuentran los siguientes archivos.

[snifer@rizel /]$ ls
boot/  etc/   lost+found/  mnt/  proc/  run/  sys/  us/   var/  lib@    openbox-image-pkgs.txt  sbin@
dev/   home/  media/       opt/  root/  srv/  tmp/  usr/  bin@  lib64@  root-image-pkgs.txt     slim.png

Entonces, podemos conocer un poco mas sobre el comando cd? claro que sí.

ComandoDescripción
cd ~Permite navegar al directorio Home del usuario.
cd ../Permite navegar a un directorio anterior donde nos encontramos, si enlazamos con mas cd ../../../../ con el podremos ir escalando mas atrás los que andan por el lado de seguridad web reconocerán cuando se usa cierto?



Otros comodines por decirlo así para cd tenemos los siguientes:

ComandoDescripción
cd .Comando para navegar en el directorio actual.
cd -Comando para navegar al directorio previo.
cd --
Comando para navegar al segundo directorio previo del actual, es decir dos directorios antes.

Ejemplos de los comandos:

cd -

[snifer@rizel ~]$ cd /home/snifer/Pictures/
[snifer@rizel Pictures]$ cd /media/37113/
[snifer@rizel 37113]$ cd -
/home/snifer/Pictures
[snifer@rizel Pictures]$ 

cd --

[snifer@rizel ~]$ cd .
[snifer@rizel ~]$ cd /home/snifer/Pictures/
[snifer@rizel Pictures]$ cd /media/37113/
[snifer@rizel 37113]$ cd -
/home/snifer/Pictures
[snifer@rizel Pictures]$ cd /media/37113/GITHUB/
[snifer@rizel GITHUB]$ cd --
[snifer@rizel ~]$ ls
creepyPastas/  Documents/  Eclipse/  Pictures/     Shaka/   VirtualBox VMs/  2014-07-22-224138_442x408_scrot.png  application.zip  Snifer.kdbx
Desktop/       Downloads/  Music/    Sdk-Android/  Videos/  virtualenv/      2014-07-25-141554_800x546_scrot.png  bfdomain.py      sublime_text

Quieres saber mas! te invito a que te des una breve vuelta por el man ;).

Listando y formando directorios.

Estoy seguro que notaron el uso de un comando en toda la entrada lo que hicimos tanto para realizar la consulta en el man, como también con cd y es ls, que nos sirve para listar directorios, para saber mas a detalle de lo que veremos en la entrada man ls.

ComandoDescripción
ls -a --allMuestra todos los archivos del directorio, incluyendo los ocultos "."
ls -hMuestra el listado de directorios incluyendo en formato "humano" legible el peso de los archivos
ls -lMuestra el listado de directorios con valores adicionales, que son permisos, a quien pertenece, fecha de modificación y peso.
ls -R --recursiveComo su nombre lo indica, muestra de manera recursiva todos el directorio y lo que contenga cada carpeta del directorio actual
ls -SMuestra los archivos del directorio ordenados por tamaño
ls -xMuestra los archivos ordenados por extensión.

Tras ver los comandos, mas o menos ya uno va dándose cuenta de lo que puede hacer en la terminal por ejemplo si se desea solo ver archivos de texto, sql, pdf, para realizar la descarga post explotación viene de perilla o no?

El siguiente comando es pwd que sirve para pownear, ya dejo lo payaso y vamos enserio pwd permite mostrar el directorio actual donde uno se encuentra como se muestra a continuación.

[snifer@rizel Desktop]$ pwd
/home/snifer/Desktopa

Búsqueda del Tesoro Perdido

Otro puno que  tenemos que tomar en cuenta es el de realizar búsquedas por medio de la terminal, ya que con ella hacemos uso del potencial del mismo, como en toda la entrada les invito a que se den una pasada por el man!.

[snifer@rizel Desktop]$ man find

El uso del comando es simple si lo deseamos o complicado para ello veremos algunos comandos útiles y el uso del mismo.

Búsqueda simple

Una búsqueda se realiza el comando find [archivo a buscar extensión] cabe resaltar que en este punto es necesario conocer la extensión y el nombre completo el mas tonto por decirlo así pero que sucede si no sabemos el nombre del archivo completo solo una parte, o solo por extensión.

[snifer@rizel Desktop]$ find yeahRoot.png
yeahRoot.png

Dichas preguntas las resolveremos a continuación o bueno trataremos de resolverlas.


Ejemplo de comandoDescripción
find /home/snifer/Desktop -name “*.mp3”Busca todos los archivos del Escritorio con extensión .mp3
find . -name “*snifer*”Busca todos los archivos que contienen la palabra “snifer” en el nombre
find . ! -name “*windows*”Busca todos los archivos que NO contienen la palabra “windows” en el nombre
find . -name “*hola*” (-a , -o) “*snifer*”Con la bandera -a busca todos los archivos que contienen la palabra “hola” y “snifer” en el nombre, con la bandera -o busca los archivos que tienes la palabra "hola" o "snifer".
find . -iname “*snifer*”Busca todos los archivos que contienen la palabra “snifer” en el nombre sin dar importancia si esta en mayúsculas o minúsculas.


Que tal hasta aquí? todo se entendió espero que hayan realizado las pruebas respectivas en su terminal. (Recuerden sin practica no hay avance.)

Estos puntos quizá quitarlos del post, pero tras una breve meditación decidí no hacerlo el motivo de ello es porque estos últimos 3 puntos son hacks por decirlo así ya que siempre vienen a salvarnos cuando mas lo necesitamos ya veran el porque

Dirección y re-dirección

Bueno la dirección y re-dirección por decirlo así cuando nos encontramos en la terminal nos permite mandar la salida de un comando teniendo en un archivo el resultado, esto permite posteriormente analizar a mas detalle, para ello veremos en la siguiente tabla el uso de cada uno, ademas cabe recordarles que el manejo de ls es solo como ejemplo ya que pueden usar cualquier comando un ping, nmap, etc.

Comando
Descripción
ls > nombre_archivo
Re-direcciona la salida estándar al archivo, si el archivo no existe lo crea.
Si el archivo existe, sobre-escribe el contenido.
ls >nombre_archivo
Re-direcciona la salida estándar al archivo o dispositivo. Si el archivo no existe lo crea. Si el archivo existe, agrega al final de los datos existentes lo que se envía.
ls
Redirecciona la entrada estándar desde el archivo al comando

Tuberias


Las tuberias o tambien conocidas como pipes, es un comodín, mecanismo o como lo quieran llamar el cual permite pasar el resultado de la salida de un comando a  otro, haciendo uso de la siguiente sintaxis. 

[snifer@rizel ~]$ comando 1 | comando 2

La salida de comando1 será la entrada de comando2. 

Si lanzamos solo el comando ps -e para saber el PID de un proceso, es necesario revisar uno a uno e ir indagando cual es el PID que deseamos matar.


En otro caso es mas fácil hacer uso de un comando adicional que seria el grep y el nombre del que deseamos obtener el pid.

[snifer@rizel ~]$ ps -e | grep lxterminal

Se accede al pid que deseamos....


Con esto terminamos, la entrada del día de hoy que tras el HangoutON que estuve mas el trabajo, me dejo todo molido, ya que ando a full con ello aun me queda mucho por hacer, explotar una vulnerabilidad mañana que se viene con todo, espero les agrade esta serie de entradas y un saludo.

Serie Terminal Hacking

2.- Terminal Hacking I - Conociendo la Shell
3.- Terminal Hacking II - Tips y configuraciones para la terminal
4.- Terminal Hacking III - Reconocimiento y Enumeración
5.- Terminal Hacking IV - Explotacion e Ingenieria Inversa
6.- Terminal Hacking V - Ataques y Envenenamiento
7.- Terminal Hacking VI - Sniffeo de Trafico

Regards,
Snifer

0 comentarios

Publicar un comentario en la entrada