wi-fi shell> indetectable · hacker ético, experto en ingeniería de sistemas y redes, con...

21
#CyberCamp18 Wi-Fi Shell> indetectable De cómo programar una shell oculta en un canal secundario Wi-Fi mediante Python y Scapy Dot11… by Yago Hansen @yadox

Upload: others

Post on 11-Mar-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Wi-Fi Shell> indetectable · Hacker ético, experto en ingeniería de sistemas y redes, con amplia experiencia en infraestructuras de red de todos los tamaños. Durante su trayectoria

#CyberCamp18

Wi-Fi Shell> indetectableDe cómo programar una shell oculta en un canal secundario Wi-Fi

mediante Python y Scapy Dot11…

by Yago Hansen @yadox

Page 2: Wi-Fi Shell> indetectable · Hacker ético, experto en ingeniería de sistemas y redes, con amplia experiencia en infraestructuras de red de todos los tamaños. Durante su trayectoria

#CyberCamp18

1.Python como lenguaje de programación

2.Scapy como librería de parseo y manipulación de paquetes de red

3.Hardware para pentesting 802.11

4.El estándar 802.11. Tramas y paquetes

5.Scapy Dot11. Primeros pasos. Mi primer script

6.Monitor.sh script para iniciar modo monitor

7.Análisis y estructura de la shell Wi-Fi.

8.PoC time!

9.Conclusiones. Preguntas. Bye!

Índice

Page 3: Wi-Fi Shell> indetectable · Hacker ético, experto en ingeniería de sistemas y redes, con amplia experiencia en infraestructuras de red de todos los tamaños. Durante su trayectoria

#CyberCamp18Yago Hansen @yadox

Hacker ético, experto en ingeniería de sistemas y redes, con amplia experiencia en

infraestructuras de red de todos los tamaños. Durante su trayectoria profesional ha realizado

proyectos de ámbito internacional para grandes corporaciones en los sectores banca,

aseguradoras, operadoras de telecomunicaciones, departamentos de seguridad del Estado,

etc. En las últimas décadas se ha especializado ampliamente en tecnologías inalámbricas,

dirigiendo con éxito numerosos proyectos para la planificación, implementación y auditoría de

seguridad.

Con su compañía WiFense ha creado un sistema de interceptación para una de las mayores

corporaciones multinacionales de Inteligencia en con sede en Israel. Desde hace algunos

años, es formador habitual en materia de seguridad para servicios de inteligencia, Defensa y

Seguridad Nacional para muchos gobiernos internacionales.

En el campo de la seguridad realiza intervenciones habituales en medios de prensa, así como

ponencias, conferencias y ciclos formativos en varias universidades y congresos. Co-fundador

de Mundo Hacker, grupo con el que ha organizado programas en radio, streaming, podcast,

conferencias, así como programas en la TV pública (Telecinco, DiscoveryMax, TVE La Dos y

Trece en Colombia). Cuenta con numerosas publicaciones y artículos en revistas

especializadas, además de colaborar con la editorial Ra-Ma, a través de la cual ha escrito y

publicado varios libros sobre seguridad informática.

Page 4: Wi-Fi Shell> indetectable · Hacker ético, experto en ingeniería de sistemas y redes, con amplia experiencia en infraestructuras de red de todos los tamaños. Durante su trayectoria

#CyberCamp18Python

VENTAJAS:Lenguaje de programación por excelencia para hacking

Ideal para PoC

Capacidad y funcionalidad ilimitada gracias a librerías

Se adapta a los tiempos con aportaciones de la comunidad

Mucha documentación

DESVENTAJAS:Falta de eficiencia

Multi-threading fallido

Multiplataforma fallida

Page 5: Wi-Fi Shell> indetectable · Hacker ético, experto en ingeniería de sistemas y redes, con amplia experiencia en infraestructuras de red de todos los tamaños. Durante su trayectoria

#CyberCamp18Scapy

Qué es Scapy?Librería de manipulación y parseo de paquetes de red

Qué ofrece Scapy?Gran cantidad de disectores y protocolos. Dot11.

Gran cantidad de funciones propias

Disponible para Python 2-3

Qué no ofrece Scapy?Poca documentación

Nula documentación en el protocolo Dot11

Page 6: Wi-Fi Shell> indetectable · Hacker ético, experto en ingeniería de sistemas y redes, con amplia experiencia en infraestructuras de red de todos los tamaños. Durante su trayectoria

#CyberCamp18Scapy. Requisitos

Hardware:Adaptador Wi-Fi modo monitor con inyección

Recomendada: TP-LINK TL-WN722N versión 1

OS:Linux OS, Kali Linux (recommended)

Python (2.5 - 3)

Scapy library

Dot11 class

Packet manipulation library

Page 7: Wi-Fi Shell> indetectable · Hacker ético, experto en ingeniería de sistemas y redes, con amplia experiencia en infraestructuras de red de todos los tamaños. Durante su trayectoria

#CyberCamp18El standard 802.11

Qué es 802.11?Grupo de estándares de comunicaciones inalámbricas desarrollados por IEEE

Basado en el estándar Ethernet 802.3

Gran cantidad de modificaciones y nuevos estándares para corregir problemas, mejorar

la seguridad o ampliar las capacidades.

Creadores de los protocolos que regulan Wi-Fi

Qué es Wi-Fi?La marca comercial gestionada por Wi-Fi Alliance

El certificador de la tecnología relacionada con Wi-Fi

Page 8: Wi-Fi Shell> indetectable · Hacker ético, experto en ingeniería de sistemas y redes, con amplia experiencia en infraestructuras de red de todos los tamaños. Durante su trayectoria

#CyberCamp18802.11 – Tramas

OTHER HEADERSRADIOTAP

Page 9: Wi-Fi Shell> indetectable · Hacker ético, experto en ingeniería de sistemas y redes, con amplia experiencia en infraestructuras de red de todos los tamaños. Durante su trayectoria

#CyberCamp18802.11 – Usa Wireshark

Page 10: Wi-Fi Shell> indetectable · Hacker ético, experto en ingeniería de sistemas y redes, con amplia experiencia en infraestructuras de red de todos los tamaños. Durante su trayectoria

#CyberCamp18Disección de un paquete

Page 11: Wi-Fi Shell> indetectable · Hacker ético, experto en ingeniería de sistemas y redes, con amplia experiencia en infraestructuras de red de todos los tamaños. Durante su trayectoria

#CyberCamp18Disección de un paquete (I)

###[ 802.11 RadioTap ]###

version = 0

pad = 0

RadioTap_len= 36

present = TSFT+Flags+Rate+Channel+dBm_AntSignal+b14+b29+Ext

TSFT = 2080

Flags = 25

Rate = 126

Channel = 14

Channel_flags= 2

dBm_AntSignal= 0

RX_Flags = 4096

Radiotap

HEADER

OTHER HEADERSRADIOTAP

Page 12: Wi-Fi Shell> indetectable · Hacker ético, experto en ingeniería de sistemas y redes, con amplia experiencia en infraestructuras de red de todos los tamaños. Durante su trayectoria

#CyberCamp18Disección de un paquete (II)

BEACON###[ 802.11 ]###

subtype = 8L

type = Management

proto = 0L

FCfield =

ID = 0

addr1 = ff:ff:ff:ff:ff:ff

addr2 = 00:1a:2b:dd:dd:f6

addr3 = 00:1a:2b:dd:dd:f6

SC = 46256

addr4 = None

###[ 802.11 Beacon ]###

timestamp = 3700879053682

beacon_interval= 100

cap = short-slot+ESS+privacy

Page 13: Wi-Fi Shell> indetectable · Hacker ético, experto en ingeniería de sistemas y redes, con amplia experiencia en infraestructuras de red de todos los tamaños. Durante su trayectoria

#CyberCamp18Disección de una trama (III)

###[ 802.11 Information Element ]###

ID = SSID

len = 9

info = ‘WLAN_3BF2’

###[ 802.11 Information Element ]###

ID = Rates

len = 8

info = ‘\x82\x84\x8b\x96$0Hl’

###[ 802.11 Information Element ]###

ID = DSset

len = 1

info = ‘\x01’

BEACON

Page 14: Wi-Fi Shell> indetectable · Hacker ético, experto en ingeniería de sistemas y redes, con amplia experiencia en infraestructuras de red de todos los tamaños. Durante su trayectoria

#CyberCamp18Primeros pasos con Scapy

#!/bin/bash

# by @yadox (2018)

channel=11

i=0

echo "Stopping conflicting services..."

airmon-ng check kill >/dev/null 2>&1

sleep 2

echo "Changing regdomain to BO..."

iw reg set BP

for phy in $(ls -v /sys/class/ieee80211/ | grep phy) ; do

order="$(echo $phy | tr -dc '0-9')"

if [ ! -d "/sys/class/net/mon$order" ] ; then

iw phy $phy interface add "mon$order" type monitor >/dev/null 2>&1

sleep 1

ifconfig "mon$order" down 2>/dev/null

macchanger -A "mon$order" >/dev/null 2>&1

sleep 1

ifconfig "mon$order" up >/dev/null 2>&1

sleep 1

monitor.sh

Page 15: Wi-Fi Shell> indetectable · Hacker ético, experto en ingeniería de sistemas y redes, con amplia experiencia en infraestructuras de red de todos los tamaños. Durante su trayectoria

#CyberCamp18Primeros pasos con Scapy

#!/usr/bin/env python

# -*- coding: utf-8 -*-

from scapy.all import *

ap_list = [ ]

def PacketHandler(pkt) :

if pkt.haslayer(Dot11) :

if pkt.type == 0 and pkt.subtype == 8 :

if pkt.addr2 not in ap_list :

ap_list.append(pkt.addr2)

print "AP MAC: %s with SSID: %s " %(pkt.addr2, pkt.info)

sniff(iface="mon0", prn = PacketHandler)

scapytest.py

Page 16: Wi-Fi Shell> indetectable · Hacker ético, experto en ingeniería de sistemas y redes, con amplia experiencia en infraestructuras de red de todos los tamaños. Durante su trayectoria

#CyberCamp18Manos a la obra

server.py

Escucha permanentemente en busca de órdenes.

Busca tramas de tipo Beacon dirigidas a una MAC especificada.

Cuando recibe este beacon, extrae el comando a ejecutar del IE

SSID y lo ejecuta.

Manda la salida del comando de vuelta en formato de trama Probe

request dirigida a la MAC especificada.

La salida se parte en campos de 252 bytes, se codifica en base64

y se encapsula en 5 elementos IE para no sobrepasar el MTU.

Page 17: Wi-Fi Shell> indetectable · Hacker ético, experto en ingeniería de sistemas y redes, con amplia experiencia en infraestructuras de red de todos los tamaños. Durante su trayectoria

#CyberCamp18Manos a la obra

client.py

Lee la entrada del usuario, que introduce un comando a

ejecutar en el servidor.

Envía el comando a ejecutar en forma de trama Beacon

dirigida a la MAC especificada. Utiliza codificación base64.

Tras enviar la trama, se queda a la escucha en busca de una

trama Probe Request dirigida a la MAC utilizada para el grupo.

Cuando recibe la trama con la salida del comando, se extrae

de los 5 IE, se une y se decodifica en base64 y se muestra y

vuelve al prompt del sistema.

Se emula una shell.

Page 18: Wi-Fi Shell> indetectable · Hacker ético, experto en ingeniería de sistemas y redes, con amplia experiencia en infraestructuras de red de todos los tamaños. Durante su trayectoria

#CyberCamp18Manos a la obra

server.py

Escucha permanentemente en busca de

órdenes.

Busca tramas de tipo Beacon dirigidas a una

MAC especificada.

Cuando recibe este beacon, extrae el

comando a ejecutar del IE SSID y lo ejecuta.

Manda la salida del comando de vuelta en

formato de trama Probe request dirigida a

la MAC especificada.

La salida se parte en campos de 252 bytes,

se codifica en base64 y se encapsula en 5

elementos IE para no sobrepasar el MTU.

Page 19: Wi-Fi Shell> indetectable · Hacker ético, experto en ingeniería de sistemas y redes, con amplia experiencia en infraestructuras de red de todos los tamaños. Durante su trayectoria

#CyberCamp18Manos a la obra

client.py

Lee la entrada del usuario, que

introduce un comando a ejecutar

en el servidor.

Envía el comando a ejecutar

en forma de trama Beacon

dirigida a la MAC especificada.

Utiliza codificación base64.

Tras enviar la trama, se queda a

la escucha en busca de una

trama Probe Request dirigida a

la MAC utilizada para el grupo.

Cuando recibe la trama con la

salida del comando, se extrae de

los 5 IE, se une y se decodifica

en base64 y se muestra y vuelve

Page 20: Wi-Fi Shell> indetectable · Hacker ético, experto en ingeniería de sistemas y redes, con amplia experiencia en infraestructuras de red de todos los tamaños. Durante su trayectoria

#CyberCamp18https://github.com/yadox666

Page 21: Wi-Fi Shell> indetectable · Hacker ético, experto en ingeniería de sistemas y redes, con amplia experiencia en infraestructuras de red de todos los tamaños. Durante su trayectoria

#CyberCamp18Conclusiones

Si quieres comenzar como newbie

–usa herramientas de terceros

Si quieres ser un hacker de verdad

–estudia Python

Si quieres ser una estrella del Rock

–estudia ANSI C

Si te gustan las redes de datos

–estudia protocolos de red

–estudia Scapy

Si la vida te da limones

–Hazte una limonada…

Si quieres ser el mejor

–compra mi libro ;-)

–Sígueme en Twitter: @yadox

SOLO HOY OFERTA

20 €