miércoles, 29 de marzo de 2017

Usando PIP para instalar Paquetes en Python

Vamos a instalar el paquete wiringpi2:

apt-get update
apt-get install python-dev python-pip
pip install wiringpi2




Nos conectamos a python e importamos el módulo:

python
import wiringpi2
wiringpi2.piBoardRev()




jueves, 23 de marzo de 2017

Prender un LED con Sensor de Movimiento Ultrasonico HC-SR04 en Raspberry Pi


En la entrada anterior vimos como controlar un LED con GPIO en la RaspBerry Pi: https://redes-seguridad.blogspot.com.ar/2017/03/controlando-un-led-con-raspberry-pi-en.html

Ahora vamos a explicar como prender el led utilizando el sensor de movimiento HC-SR04.

Materiales que utilizaremos son los mismos elementos que en el link de arriba, pero agregando el sensor que se puede conseguir por cualquier lado.


Pasos para la conexión:

Voy a explicar lo mejor posible, utilizando la terminología de filas A, B, C, etc y columnas 0, 1, 2, al mejor estilo batalla naval.

Los pines del Raspberry los enumeraré teniendo la tarjeta SD hacia la izquierda y el puerto USB hacia la derecha, el de abajo a la izquierda sería el PIN_1, el de arriba PIN_2, e ir contando de abajo hacia arriba y de izquierda a derecha PIN_3 sería el segundo de abajo de izq a der y así sucesivamente.

Lo que está en letra negrita es del raspberry y lo que está en letra azul es el protoboard:

1) Conectamos el PIN_2 de las raspberry al positivo => +59 (la primer linea de abajo del protoboard).

2) PIN_6 al negativo => -55 (la segunda linea de abajo del protoboard).

3) PIN_10 al J50

4) PIN_11 al J51

5) PIN_16 al H33

6) +53 al J49

7) -52 al J52 

8) Conectamos una resistencia del -35 al J35

9) Conectamos el LED de 5volts: El negativo (lado más corto) del LED lo conectamos al G35 del proto y el positivo (lado más largo) al G33

10) El sensor ultrasónico lo conectamos desde el F49 al F52. IMPORTANTE!! El GND del sensor debe ir en el F52 y el vCC del sensor al F49 del protoboard.


Ya finalizadas las conexiones les pongo el código para que generen el python:

vi /var/www/html/sensorProximidad.py

#!/usr/bin/python
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
Trigger = 10
Echo = 12
GPIO.setup(Trigger,GPIO.OUT)
GPIO.setup(Echo,GPIO.IN)
print "Sensor Ultrasonico"
try:
        while True:
                GPIO.output(Trigger,False)
                time.sleep(0.5)
                GPIO.output(Trigger,True)
                time.sleep(0.00001)
                GPIO.output(Trigger,False)
                inicio=time.time()
                while GPIO.input(Echo)==0:
                        inicio=time.time()
                while GPIO.input(Echo)==1:
                        final=time.time()
                t_transcurrido=final-inicio
                distancia=t_transcurrido*34000
                distancia=distancia/2
                if distancia < 10:
                        GPIO.setmode(GPIO.BOARD)
                        GPIO.setwarnings(False)
                        GPIO.setup(16, GPIO.OUT)
                        GPIO.output(16,1)
                else:
                        GPIO.setmode(GPIO.BOARD)
                        GPIO.setwarnings(False)
                        GPIO.setup(16, GPIO.OUT)
                        GPIO.output(16,0)
except KeyBoardInterrupt:
        GPIO.cleanup()

Le damos permisos al script de ejecución y lo ejecutamos, ponemos la mano a menos de 10 centímetros del sensor y si está todo bien conectado se encenderá el LED.

Acá les dejo el planito que hice:



Les dejo también un video del enano jugando con el sensor:



miércoles, 22 de marzo de 2017

CRITICAL: (0, 'Socket error: [Errno 111] Connection refused') VMware ESX

Apareció el siguiente error en uno de los VMware ESXi monitoredo con Nagios:


CRITICAL: (0, 'Socket error: [Errno 111] Connection refused') 


Investigando un poco recordé que posiblemente era un error de CIM:

Entrando en el VCenter y dirigiendome al server específico encontré que efectivamente el servicio CIM estaba caído.


Acá les dejo un paso a paso de como reiniciarlo:
https://redes-seguridad.blogspot.com.ar/2016/09/checkesxihardwarepy-service-check-timed.html


sábado, 18 de marzo de 2017

Prender/Apagar LED en Raspberry con PHP llamando a Python

En este enlace hicimos el primer ejercicio de prender y apagar un led en Raspberry Pi con python: https://redes-seguridad.blogspot.com.ar/2017/03/controlando-un-led-con-raspberry-pi-en.html

Ahora vamos a hacer un simple PHP con dos botones para prender el LED desde una web, pudiendo hacerlo desde la computadora, del celular o desde un lugar remoto:

Iniciamos el webserver apache:

root@kali:/home# /etc/init.d/apache2 start
[....] Starting apache2 (via systemctl): apache2.service
. ok

Tener en cuenta que tenemos que habilitar el sudo para el usuario www-data, lo configure rapido, sin seguridad dandole permiso a todo en el sudoers pero tengamos cuidado de no hacerlo asi porque es totalmente inseguro:

root@kali:~# visudo
# User privilege specification
www-data        ALL=(ALL:ALL) NOPASSWD: ALL

Nos logueamos con el usuario www-data:

root@kali:~# su - www-data
www-data@kali:~$ 

Generamos los archivos que lo prenden, el python y el php:

www-data@kali:~$ sudo cd /var/www/html/ 
www-data@kali:~/html$ sudo vi prende.py
#!/usr/bin/python
print "LED prendido!!"
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(17, GPIO.OUT)
GPIO.output(17,1) 
www-data@kali:~/html$ sudo vi prende.php
$a=exec('sudo python /var/www/html/prende.py');
echo $a;
?>

 Ahora los que apagan:
www-data@kali:~/html$ sudo vi apaga.py 
#!/usr/bin/python
print "LED apagado!!"
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(17, GPIO.OUT)
GPIO.output(17,0) 
www-data@kali:~/html$ sudo vi apaga.php
$a=exec('sudo python /var/www/html/apaga.py');
echo $a;
?>

 Lo prendemos y lo apagamos llamando al .php correspondiente desde un navegador:

http://192.168.1.40/prende.php

http://192.168.1.40/apaga.php


Ahora hacemos un unico php que tenga dos botones que prenderan o apagaran el led:


www-data@kali:~/html$ sudo vi boton.php


http://192.168.1.40/boton.php


Tenemos una opción mejor que encontré en el sitio de http://riverajefer.blogspot.com.ar/


La clonamos con el git y edigamos el procesa.php

root@kali:~# cd /var/www/html/
root@kali:/var/www/html# git clone https://github.com/rpi-jefer/rpi-led 
root@kali:~# vi /var/www/html/rpi-led/procesa.php


Cambio a la ruta de mis pythones así no tengo que cambiar los pines uno por uno:

    exec('sudo python /var/www/html/apaga.py');
y
    exec('sudo python /var/www/html/prende.py');


Ingresamos a la url y vemos que prende tocando el pulsador:




Controlando un LED con Raspberry Pi en Python con GPIO

La Raspberry Pi que voy a utilizar es el Modelo B:

Led 5 volt, resistencia para ese led y un protoboard, solderless ò breadboard MB-102, una tarjeta SD un cable de red para conectar al modem/router y un cargador de celular USB.

El sistema operativo que tengo instalado es Kali Linux, pero puede hacerce con cualquier otro, si quieren istalarle este, les dejo acá el link: https://redes-seguridad.blogspot.com.ar/2017/03/instalando-kali-linux-en-raspberry-pi.html


La conexión que hacemos será lo siguiente:


Para que se entienda mejor les hice el planito en paint:



Ahora explico la conexión:

1) El pin identificado con la letra A del GPIO del raspberry pi (contamos 6 pines de derecha a izquierda de la fila de arriba) y lo conectamos a la letra B en naranja (en el protoboard tipo batalla naval sería la fila B y la columna 20),

2) El pin identificado con la letra C del GPIO del raspberry pi (contamos 3 pines de derecha a izquierda de la fila de abajo) y lo conectamos en la letra D (en el protoboard tipo batalla naval sería fila A y columna 31).

3) Para conectar el LED tenemos que tener en cuenta que tiene un conector más largo que el otro. El lado más corto lo conectamos a la derecha E (en el protoboard tipo batalla naval sería fila C y columna 31) y el lado más largo del LED a la izquierda conectado al F (en el protoboard tipo batalla naval sería fila C y columna 29)

4) Para conectar la resistencia la conectamos en el G (en el protoboard tipo batalla naval sería fila D y columna 20) y en el H (en el protoboard tipo batalla naval sería fila D y columna 29).


Instalación de Python y GPIO en Kali Linux:

root@kali:~# apt-get install python-dev python3-dev gcc
root@kali:/home# wget https://pypi.python.org/packages/e2/58/6e1b775606da6439fa3fd1550e7f714ac62aa75e162eed29dbec684ecb3e/RPi.GPIO-0.6.3.tar.gz 
root@kali:/home# tar xzvf RPi.GPIO-0.6.3.tar.gz 
root@kali:/home# cd RPi.GPIO-0.6.3 
root@kali:/home/RPi.GPIO-0.6.3# python setup.py install 
root@kali:~# python
Python 2.7.13 (default, Jan 19 2017, 14:48:08)
[GCC 6.3.0 20170118] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import RPi.GPIO

Armamos un python para encender y otro para apagar el LED:

root@kali:/home# vi prender_led.py
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(17, GPIO.OUT)
GPIO.output(17,1)

En la ultima linea le indicamos con el 1 que lo enciende, si lo cambiamos por cero lo apaga:

root@kali:/home# vi apagar_led.py
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(17, GPIO.OUT)
GPIO.output(17,0)

Prendemos el led ejecutando el python:
root@kali:/home# python prender_led.py

Apagamos el led ejecutando el otro python:
root@kali:/home# python apagar_led.py


Armamos otro script que recibe un parametro, si es 1 prende y si es 0 apaga:

root@kali:/home# vi prende_Con_1_Apaga_con_0.py
import RPi.GPIO as GPIO
import sys
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
LED=17
print sys.argv[1]
ESTADO=int(sys.argv[1])
GPIO.setup(LED, GPIO.OUT)
GPIO.setwarnings(False)
if ESTADO == 0:
        print('Apagando el LED')
        GPIO.output(LED,ESTADO)
else:
        print('Prendiendo el LED')
        ESTADO = 1;
        GPIO.output(LED,ESTADO)

Prendemos:
root@kali:/home# python prende_Con_1_Apaga_con_0.py 1

Apagamos:
root@kali:/home# python prende_Con_1_Apaga_con_0.py 1

Hacerlo titilar dentro de un while infinito:

root@kali:/home# vi titila.py
import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)

while 1:
        GPIO.setup(17,GPIO.OUT)
        GPIO.output(17,1)
        time.sleep(0.5)

        GPIO.setup(17,GPIO.OUT)
        GPIO.output(17,0)
        time.sleep(0.5)


SOS con codigo Morse:

root@kali:/home# vi SOS.py
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
while 1:
        GPIO.setup(17,GPIO.OUT)
        GPIO.output(17,1)
        time.sleep(0.5)
        GPIO.setup(17,GPIO.OUT)
        GPIO.output(17,0)
        time.sleep(0.5)
        GPIO.setup(17,GPIO.OUT)
        GPIO.output(17,1)
        time.sleep(0.5)
        GPIO.setup(17,GPIO.OUT)
        GPIO.output(17,0)
        time.sleep(0.5)
        GPIO.setup(17,GPIO.OUT)
        GPIO.output(17,1)
        time.sleep(0.5)
        GPIO.setup(17,GPIO.OUT)
        GPIO.output(17,0)
        time.sleep(0.5)
        GPIO.setup(17,GPIO.OUT)
        GPIO.output(17,1)
        time.sleep(2)
        GPIO.setup(17,GPIO.OUT)
        GPIO.output(17,0)
        time.sleep(0.5)
        GPIO.setup(17,GPIO.OUT)
        GPIO.output(17,1)
        time.sleep(2)
        GPIO.setup(17,GPIO.OUT)
        GPIO.output(17,0)
        time.sleep(0.5)
        GPIO.setup(17,GPIO.OUT)
        GPIO.output(17,1)
        time.sleep(2)

Video prediendo y apagando los LEDs:


Y el Santulon jugando con el nuevo chiche:



FUENTES:

https://www.raspberrypi.org
https://geekytheory.com
http://rsppi.blogspot.com.ar/
http://robologs.net/
http://www.aprendeprogramacion.net/

martes, 14 de marzo de 2017

Restablecer contraseña de Administrador de Windows 7 con Clonezilla


Reiniciamos la Pc con el pendrive del clonezilla conectado y seleccionamos que bootee desde usb:


Seleccionamos la opción por defecto:


Elegimos el lenguaje deseado:


No tocar el keymap:


Ingresamos en la linea de comandos:


Ejecutamos lo siguiente para loguearnos como root:

$ sudo su - root


Vemos con fdisk en que partición tenemos instalado windows, yo ya conozco que estaba en la partición de 454Gb, pero podemos probar montar una por una para ver donde está realmente:

# fdisk -l |grep NTFS


Montamos la partición en /mnt con:

# mount /dev/sda3 /mnt/

Y luego ingresamos en el directorio System32:

# cd /mnt/Windows/System32/


Hacemos una copia del sethc.exe original para no perderlo:

# cp -pf sethc.exe sethc.exe.orig

Y luego lo pisamos con el cmd.exe:

# cp -pf cmd.exe sethc.exe 

Finalmente reiniciamos el sistema y dejamos que inicie con el windows nuevamente:

# reboot 


Una vez que nos pide login de windows, sin loguearnos tocamos varias veces la tecla SHIFT hasta que aparezca la ventana de CMD:


Tipeamos en la ventana negra los siguiente:

C:\Windows\System32> control userpasswords2

Seleccionamos el usuario administrador y restablecemos la clave:


Ya podemos ingresar al windows con el usuario administrador local.



martes, 7 de marzo de 2017

Configurando WiFi en Raspberri Pi con Adaptador USB Philips


1) Prendemos la raspberry pi con el cable de red conectado.

2) Una vez que booteó nos conectamos por ssh por la ip que nos dió.

3) Insertamos el adaptador wifi philips y vemos si lo detecta el S.O.

root@kali:~# lsusb


4) Editamos el archivo de configuración

root@kali:~# vi /etc/network/interfaces

Y ponemos lo siguiente para configurarla, reemplazando Mi_Nombre_de_la_Red por el SSID (nombre de la wifi a conectar)
Y cambiar Mi_Nombre_de_la_Red por la clave con la cual nos conectamos a la wifi. Dejar las comillas:

auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-ssid "Mi_Nombre_de_la_Red"
wpa-psk "La_clave_para_Conectar"


5) Reiniciamos el demonio de red:

root@kali:~# /etc/init.d/networking restart

6) Una vez que reinició, desconectamos el cable de red (no lo volvemos a enchufar).

7) Desconectamos el cable de alimentación y volvemos a conectarlo.

8) Cuando finalizó el booteo vemos que ya linkea la luz del adaptador wifi.

9) Nos conectamos por ssh por la ip que nos dió fijandonos en el modem/router ó vamos pingueando hasta que alguna ip nos responda ó lo escaneamos con nmap.


10) Si queremos ponerle ip fija:

root@kali:~# vi /etc/network/interfaces
auto wlan0
#allow-hotplug wlan0
#iface wlan0 inet dhcp
iface wlan0 inet static
address 192.168.1.43
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
wpa-ssid "Nombre_Wifi"
wpa-psk "Contraseña"
root@kali:~# /etc/init.d/networking restart

lunes, 6 de marzo de 2017

Instalando Kali Linux en Raspberry Pi


Antes que nada prepararé la imagen booteable en una SD de 16Gb desde Windows 7:


1) Conectamos la tarjeta de memoria SD en una pc con windows 7, no es necesario formatearla.


2) Descargamos el Win32diskimagen y lo instalamos en windows, la instalación es tan compleja, como dar siguiente, siguiente, siguiente. Lo descargamos del siguiente enlace:  https://sourceforge.net/projects/win32diskimager/files/latest/download


3) Descargamos la imagen de kali para raspberry pi de: https://www.offensive-security.com/kali-linux-arm-images/ Yo me descargué esta:

kali-2.1.2-rpi.img.xz  => https://images.offensive-security.com/arm-images/kali-2.1.2-rpi.img.xz

        Ya que tengo este modelo para probar:



4) La descomprimi con el winrar y queda el file: kali-2.1.2-rpi.img


5)  Abrimos el Win32DiskImager y seleccionamos la imagen que descomprimimos en el punto anterior y seleccionamos la unidad que tomó la tarjeta SD, en mi caso el H:\, clickeamos en write:


Verificamos que realmente la ruta donde queremos escribir y click en yes:


Luego ok y exit. Ya tenemos la memoria con el booteable de kali:



6) Ponemos la memoria SD en el raspberry, le conectamos un cable de red. Para darle energía conectamos una punta del cable usb de un cargador de celular al 5v/1ADDC y la otra punta al USB de la compu.

     Si vemos que prenden las luces roja y verde es que está booteando correctamente.

     Cuando terminó de bootear vemos que quedan las 4 luces prendidas, naranja, verde, verde y roja.


7) Como se que ip tomó? 
     Desde otro linux que tengo corriendo en un virtualbox ejecutamos un barrido con nmap:

root@linuxillo:~# nmap -sP 192.168.1.0-255 | grep -2 Raspberry | head -1

     Obtendremos la dirección ip del dispositivo, al cual nos conectaremos por ssh por putty con:

usuario:     root
password:  toor

     También podríamos conectarnos al modem y ver que ip asignó el DHCP por su mac.


8) Como me conecto si no tengo monitor para conectarle?

Instalamos VNC server:

root@kali:~# apt-get update
root@kali:~# apt-get install x11vnc
Do you want to continue? [Y/n] Y
root@kali:~# x11vnc -storepasswd
Enter VNC password:
Verify password:
Write password to /root/.vnc/passwd?  [y]/n y
Password written to: /root/.vnc/passwd
root@kali:~#
root@kali:~# x11vnc -ncache q0 -auth guess -nap -forever -loop -repeat -rfbauth /root/.vnc/passwd -rfbport 5900

 Nos logueamos con el vncviewer desde el windows ó desde el plugin del chrome:

Ingresamos la ip del kali y la sesión que nos mostró por pantalla al iniciar el x11vnc:


Tildamos la opción y le damos connect:


Ingresamos el password que seteamos para el vnc cuando ejecutamos el -storepasswd y damos ok:


Nos logueamos con la mismos datos que ingresamos por ssh: root y toor:


Y taraaaaaaaaan, tenemos el Kali corriendo en el Raspberry pi sin monitor:




domingo, 5 de marzo de 2017

Ingresar al Modem de Speedy ZTE



Fue probado en el modem con las siguientes características:

     Marca: ZTE
     Modelo: ZXV10 W300
     Versión de firmware: W300V3.1.0a_DR0_AR

Esto puede hacerse tanto desde la ip interna como desde la ip pública, lo probé de ambas. Ahora lo voy a mostrar desde la ip interna.

Como obtenemos la ip del modem? => Inicio => Ejecutar => cmd => ipconfig /all | find "Puerta":


Ingresamos desde el navegador ingresando a la ip del modem:


Nos descargamos la rom desde la url poniendo en el navegador: http://192.168.1.1/rom-0


Ingresamos en esta url: http://www.routerpwn.com/zynos/ seleccionamos el archivo rom-0 que descargamos, completamos el captcha y hacemos click en "Unpack rom-0"


Nos devuelve lo siguiente con la clave:


Volvemos a ingresar al modem ingresando sólo la ip, seleccionamos "Configuración Avanzada":


Ingresamos usuario y la clave:


Y ya estamos dentro:



sábado, 4 de marzo de 2017

Pishing de un Sitio Web

Voy a mostrar lo fácil que es falsificar un sitio web para que tengan cuidado cuando nos pasan un link el cuál pide usuario y contraseña.

Empezamos explicando que es el pishing: 

Phishing o suplantación de identidad es un término informático que denomina un modelo de abuso informático y que se comete mediante el uso de un tipo de ingeniería social, caracterizado por intentar adquirir información confidencial de forma fraudulenta (como puede ser una contraseña, información detallada sobre tarjetas de crédito u otra información bancaria). El cibercriminal, conocido como phisher, se hace pasar por una persona o empresa de confianza en una aparente comunicación oficial electrónica, por lo común un correo electrónico, o algún sistema de mensajería instantánea o incluso utilizando también llamadas telefónicas.1 FUENTE: https://es.wikipedia.org/wiki/Phishing

Este instructivo fue realizado en un laboratorio, no se recomienda hacerlo fuera de este ámbito ya que en varios países es ilegal y está penado por la ley.

Mostraremos como falsificar el sitio de facebook, obviamente que es aplicable a cualquier otra web.
Fue realizado con Kali Linux virtualizado con Virtual Box.

1) Verificamos la ip del kali (equipo en el cual haremos la falsificación), ejecutamos ifconfig. En este caso obtenemos la ip: 192.168.1.43:



2) Utilizamos la herramienta setoolkit, cuando nos muestar el siguiente mensaje damos ENTER:


3) Seleccionamos la primer opción presionando 1, es: Ataque de ingeniería social:


4) Web site Attack Vector eligiendo esta vez la opción: 2


5) Ahora la opción: 3


6) Clomanos el sitio con la opción: 2


7) Vemos que nos pide que ingresemos la dirección ip del servidor donde clonaremos el sitio, la ip la obtuvimos al principio y es la: 192.168.1.43


 8) Ahora nos pide que ingresemos la url del sitio web que queremos clonar, en este caso es: http://www.facebook.com y luego nos indica que el servidor web apache no está iniciado, damos Y para iniciarlo:


9) Nos que en la ruta: /var/www/html descargará el sitio clonado:


10) Vamos tocando 99 y enter la cantidad de veces que indique para salir del setoolkit:


11) Supuestamente nos pasan esta url para robarnos el usuario y contraseña. Nos logueamos pensando que es facebook si no prestamos atención en la barra de direccion:


12) No hizo absolutamente nada, como que no lo tomó correctamente y nos redirecciona al verdadero sitio de facebook:


13) Vamos a la ruta donde descargó la web clonada y nos habrá generado un archivo llamdao: harvester_fecha_y_hora.txt donde veremos el usuario y contraseña.

En mi caso el usuario que ingresé fue: pongo_mi_user@yahoo.com y la clave fue: MiClave. La vemos correctamente dentro de dicho archivo:



Obviamente que es para gente novata, ya que en la url no aparece, pero también es muy simple cambiar la ip por www.facebook.com haciendo tecnicas de "DNS Spoofing" y/o "Envenenamientos ARP".