sábado, 20 de octubre de 2012

Saber que servicios se están ejecutando en linux

Hola, hoy os enseñaré como comprobar que servicios tenéis en ejecución en vuestro linux.

NOTA: lo que voy a exponer a continuación no funciona en ubuntu ni debian, ya que no permiten mirar el estado de los servicios. Lo he probado personalmente en openSuSE y funciona, y también debería de funcionar en otras distros como Fedora o Mandriva

Primero, si queréis ver una lista de los servicios que hay en vuestro sistema podéis verla con el siguiente comando (debemos ejecutarlo como root):


chkconfig -l


Usando este comando obtendremos un resultado como el siguiente:




bien, aquí podemos ver a la izquierda el nombre del servicio y a la derecha podemos ver una serie de datos que indican un numero y a su derecha "on" o "off", NO OS DEJÉIS ENGAÑAR, esto no es el estado actual del servicio, lo que nos indica es el estado que tendrá el servicio al iniciar un determinado nivel de ejecución del sistema, por ejemplo "SuSEfirewall2_init" estará activo cuando se inicie el nivel de ejecución 3 o 5, pero si yo mas tarde decido desactivar el servicio manualmente (aun estando en nivel de ejecución 3 o 5) y ejecuto el chkconfig -l , me seguirá apareciendo como "on" a pesar de que realmente el servicio esta desactivado. Hay que tener cuidado con esto ya que puede inducir a error y pensar que tenemos un servicio activado o desactivado cuando realmente no es así.

Para mirar el estado real de un servicio lo que tenemos que hacer es irnos a la carpeta /etc/init.d/ dentro de esta carpeta nos aparecerán distintos archivos, los cuales muchos de ellos hacen referencia a servicios, si queremos por ejemplo ver el estado del servicio "SuSEfirewall2_init" tendríamos que ejecutar dicho archivo con el argumento "status" tal que así (una vez mas tenemos que hacerlo como root):

./SuSEfirewall2_init status





como podemos ver en la imagen en mi caso se muestra que el servicio esta ejecutándose.

Vale, ahora ya sabemos como poder ver en que estado están los servicios, pero el problema viene cuando queremos echar un vistazo a todos los servicios, en tal caso tendríamos que ir ejecutando uno por uno todos los archivos con el argumento "status" para poder ver el estado, lo cual es algo engorroso... Así que he creado un script que automatizara esta tarea y nos mostrara el estado de todos los servicios.

A continuación os dejo el código del script:



#!/bin/bash

DIR=/etc/init.d/
max=`ls $DIR | wc -l`

for (( i=1; $max >= i; i++))
do

if test $i -eq `ls $DIR | grep -n halt | cut -f 1 -d ":" | head -n 1`\
 -o $i -eq `ls $DIR | grep -n reboot | cut -f 1 -d ":" | head -n 1`
then
:
else

 echo "------------------------------"
 echo
 echo "`ls $DIR  | head -n $i | tail -n 1`"
 echo
 cd $DIR
 ./`ls $DIR | head -n $i | tail -n 1` status
 echo
fi

done



Para ejecutarlo simplemente coger el código, lo guardáis en un archivo de texto plano y le dais permisos de ejecución (yo le he llamado services al archivo, pero podeis llamarle como querais):



después para ejecutarlo tenéis que hacerlo de nuevo como root, y se os mostraran todos los servicios con su respectivo estado:




En mi caso por ejemplo podemos ver como tengo el firewall activo (servicios "SuSEfirewall2_init" y "SuSEfirewall2_setup") y también por ejemplo tengo el ssh (servicio sshd) desactivado.

En caso de que queráis activar o desactivar los servicios lo único que tenéis que hacer es ir de nuevo a la carpeta /etc/init.d/ y en vez de usar el argumento "status" al ejecutar los archivos, tenéis que usar "start" para activarlo o "stop" para desactivarlo.

Saludos :)

viernes, 19 de octubre de 2012

Una semana bien aprovechada

wenasssss !!!! ya estamos a viernes, otra semana que vuela, pero esta semana no ha sido una semana normal debido a los 3 días que hubo de huelga, a la cual no fui (ya que me parecía muy  heavy perder unas 20 horas de clase).

En principio sabia que la mayoría de gente no iba a ir a clase, pero no pensé que al final iría yo solo xD, la verdad es que me quede bastante sorprendido. Bueno, obviamente los profesores no me iban a dar clase a mi solo, cosa que ya había previsto, así que llevaba en mi mente algunas cosas preparadas para hacer durante las clases y así poder aprovechar el tiempo al máximo.

Al final la verdad es que las cosas salieron muchísimo mejor de lo que esperaba, ya que solo tenia pensado probar un par de cosas durante los 3 días de huelga, y después me dedicaría a repasar todo lo que habíamos dado de materia en todas las asignaturas, pero por un lado y por otro se me fueron ocurriendo un montón de cosas que hacer sobre un montón de temas como: pruebas de seguridad, administración y configuración de linux, resolución de problemas, experimentos de redes.... y quizá lo mas sorprendente es que dado un momento incluso me puse a programar (hacia un montón que no programaba), hice un par de experimentos en C (mas que nada para repasar algunas cosas y probar otras) y otro par en shell script.

En definitiva me fastidio bastante perder las 20 horas de clase (en las cuales habríamos dado bastante materia probablemente), pero por otro lado  creo que me ha beneficiado bastante, ya que con todo lo que he podido probar durante los 3 días he sacado un montonazo de conclusiones sobre cosas que no sabia y que gracias a algunos experimentos que hice ahora las entiendo muchísimo mejor =D, en definitiva ha sido una semana muy bien aprovechada.

Ademas por otra parte todas las pruebas que hice y los datos que saqué de ellas me servirán para hacer varias entradas en el blog, las iré poniendo según las vaya redactando.

Bueno y hablando del blog... me he propuesto poner como mínimo dos entradas por semana, la verdad es que quiero mantener el blog activo, pero me cuesta bastante encontrar tiempo para redactar las entradas y ademas durante la semana apenas tengo tiempo, así que casi siempre escribo durante el fin de semana, lo cual no me gusta mucho porque me gustaría publicar las entradas mas periódicamente (cada 2 o 3 días por ejemplo estaría bien), pero bueno, intentare hacer todo lo posible para mantener el ritmo.

Saludos :D


sábado, 13 de octubre de 2012

¿Cómo saber quien esta en mi red?

Buenas otra vez, en esta nueva entrada os traigo un mini-tutorial que creo que le puede resultar muuuyy interesante a bastantes personas, os enseñare como saber quien esta conectado en vuestra red. Sobre todo es interesante para las personas que tienen wi-fi (la mayoria vamos) y que quiere comprobar si hay alguien no autorizado que esta utilizando su red.

Bien, empezamos, para saber que ordenadores estan conectados a tu red usaremos el protocolo ICMP, quizá no os resulte familiar, pero si hablo del programa ping seguro que a mas de uno le suena. Resumiendo... lo que hace el ping es enviar una solicitud a una dirección IP en concreto, si hay un pc en esa dirección este respondera a la solicitud y obtendremos una respuesta, en caso de que no haya ningun pc simplemente no obtendremos respuesta.

Vale, ahora queremos poner esto en práctica, si quisiésemos comprobar que dispositivos hay conectados a nuestra red, tendríamos que hacer ping a todas y cada una de las direcciones de nuestra red de la siguiente manera:

- Abrimos una shell y escribimos :

ping 192.168.120.1

ping 192.168.120.2

ping 192.168.120.3

...etc, etc, etc

 NOTA: en el ejemplo puse la red 192.168.120.0 que es la que uso yo personalmente, normalmente por defecto los routers usan la red 192.168.0.1 o 192.168.1.1, si tienes el router configurado por defecto probablemente tengas una de esas dos redes.

Esto es demasiado engorroso, ademas de que nos llevaría mucho tiempo, ya que la máscara de subred que se suele usar es la 255.255.255.0 lo que indica que hay 254 direcciones útiles en la red, osea que tendríamos que usar el comando ping 254 veces para comprobar cuantos dispositivos hay conectados a nuestra red. Una solución posible seria escribir un script que ejecutase el comando ping con todas las diversas direcciones ip, (aunque la salida de datos que nos daría sería demasiado larga y el script tambien tardaría bastante en ejecutarse).

Otra solución posible sería la de hacer un ping a la dirección broadcast para que la solicitud ICMP se envíe a todos los ordenadores de la red, se haría de la siguiente manera:

ping -b 192.168.120.255

la dirección broadcast siempre es la ultima de la red, en este caso 192.168.120.255. El flag -b nos indica que la solicitud se debe de enviar como broadcast. Pero con este metodo a pesar de que parece bastante bueno tenemos otro problema y es que algunos dispositivos tienen desactivado por defecto la posibilidad de responder a una solicitud broadcast, de manera que en algunos casos puede ser que haya diversos dispositivos conectados a nuestra red y no responda a nuestra solicitud ICMP.


NMAP LA SOLUCIÓN DEFINITIVA

Bien, hasta ahora teníamos dos problemas, el primero es que si queríamos enviar solicitudes ping individualmente sería demasiado tedioso y nos llevaría mucho tiempo, y el segundo es que con la solicitud ICMP broadcast algunos dispositivos no nos responderían a pesar de estar en la red. Para poner solucion a estos problemas usaremos NMAP.

NMAP es un escaner de red, que nos permite emplear diferentes tipos de protocolos para realizar diversos tipos de escaneado en una red (es una herramienta realmente útil).

Podeis conseguir NMAP en su web oficial: http://nmap.org

Bien, una vez tengamos NMAP en nuestro pc abrimos una shell y ponemos lo siguiente (NMAP se puede usar con interfaz grafica, pero prefiero usarlo desde una shell):

nmap -sP 192.168.120.0-255

repasemos los flags:

-sP sirve para enviar solicitudes ICMP

192.168.120.0-255 es la direccion IP a la que queremos hacer ping, pero fijaros que en este caso he puesto el rango completo al que quiero hacer ping en el último byte de la direccion, de manera que asi se hará ping a todas las direcciones de mi red desde la 192.168.120.0 hasta la 192.168.120.255

veamos el resultado que da en mi caso:



Como se puede ver en mi caso salen 3 IPs, una es la del ordenador que estoy usando ahora mismo, otra es de mi router y otra es de mi smartphone, de esta manera sé que hay tres dispositivos conectados a mi red y que son tres dispositivos que me pertenecen a mi, ya que yo les he asignado esas IPs, si en este caso me apareciese una nueva IP que yo nunca he asignado querría decir que hay alguien ajeno conectado a mi red.

Esta técnica debería de funcionar en la mayoría de los casos, pero a veces puede ser que no funcione debido a que hay un bloqueo de los paquetes ICMP, en este caso habria que usar otro tipo de técnicas...

CLICK AQUÍ PARA IR A LA 2ª PARTE

Espero os haya gustado este mini-tutorial.

Saludos =D

[Manual] Como conseguir contraseñas Wi-Fi

Wolap !!!, hoy os traigo un nuevo manual de mi cosecha, en principio no tenía ninguna intención de subir este manual, pero ya que el tema salio en clase pues he decidido subirlo por si a alguien le interesa.

El manual trata sobre descifrar claves WEP, WPA/WPA2, para poder obtener acceso a puntos de acceso wi-fi de los cuales no tenemos la contraseña.

El manual (al igual que el de ARP Spoofing) lo escribí hace unos 5 años (este manual en concreto es un poco mas antiguo que el del ARP Spoofing), pero las técnicas que explico en el manual siguen funcionando igual de bien.

A continuación os dejo el manual: WEP,WPA-WPA2 Cracking

[ACTIVIDAD] Historia de los Hackers

Buenas, hoy os traigo un documental sobre la historia de los hackers que personalmente me parece muy interesante, el documental cuenta un poco el principio de todo y como con la aparición de las primeras lineas telefónicas ya había personas con la curiosidad suficiente y los conocimientos necesarios como para poder vulnerar el sistema y poder conseguir por ejemplo llamadas gratis.

Personalmente la primera parte del documental, en donde se habla de la vulneración de las líneas telefónicas me parece de lo mas increíble.

Bueno y sin más os dejo el documental:


jueves, 4 de octubre de 2012

[Manual] ARP Spoofing

Buenas, enlazando un poco con la actividad anterior de direcciones IP y MAC, he decidido subir un manual que escribí hace unos 5 años, en el cual explico como hacer un ARP Spoofing (algo que digamos esta bastante relacionado con direcciones IP y MAC), técnica que nos permite visualizar todo el trafico de un ordenador ajeno al nuestro que estea en nuestra misma red sin que este se entere...

El manual tiene muuuuuuuchísimas faltas de ortografía (lo siento, antes no tenía la manía de escribir bien xD), pero bueno, no os centreis en eso y centraros en el contenido en si, que es realmente interesante.

Por cierto, para entender el manual se deberían de tener ciertos conocimientos previos sobre redes, de todas maneras os recomiendo leer el manual para haceros una idea de como y con que facilidad alguien puede violar vuestra privacidad dentro de una red local.

A continuación os dejo el enlace al manual: ARP Spoofing

[ACTIVIDAD] Conversión de direcciones IP y MAC a binario

En esta entrada convertiremos una dirección IP y MAC a sus correspondientes en binario, primero para saber la dirección IP y MAC del equipo haremos lo siguiente:

Linux: accedemos a una shell de sistema, ya sea un terminal emulado como xterm o un terminal físico pulsado las teclas crtl+alt+F? siendo ? un numero entre 2 y 6, cuando esteamos en la shell tecleamos el siguiente comando:

ifconfig 

y nos aparecerán todos los datos de todas las interfaces, si queremos especificar una interfaz en concreto solo tenemos que indicarla como atributo, ifconfig [interfaz]. EJ: ifconfig eth0.

En linux tambien podriamos consultar la información desde la interfaz grafica, pero la manera de hacerlo varia dentro de cada distribución.

Windows: accedemos a una shell de sistema, para ello desde el menu de ejecucion tecleamos cmd, despues dentro del shell tecleamos el siguiente comando:

ipconfig /all

y nos aparecerán todos los datos relativos a las interfaces de redes. Si queremos hacerlo desde la interfaz gráfica desde el menu de ejecucion tecleamos ncpa.cpl para acceder al panel de configuracion de interfaces, despues solo tenemos que hacer click derecho encima de la interfaz de la cual queremo saber los datos y clicar en propiedades.

A continuación traduciremos una direccion IP y una MAC a binario, extraida de un equipo ubuntu:



Dirección MAC: 00:24:1D:9E:D7:34

Binario:00000000:00100100:00011101:10011110:11010111:00110100


Dirección IP: 69.51.65.19

Binario: 01000101.00110011.01000001.00010011