1. From Kernel Sp ce
To User Heaven
Jaime
Sánchez
@segofensiva
2. WHO
AM
I
§
Ingeniero
Informá,ca
de
Sistemas
y
Execu,ve
MBA
§
Soy
un
apasionado
de
la
seguridad
informá,ca,
con
más
de
10
años
de
experiencia
profesional.
§
Mi
alma
sigue
siendo
Old
School,
aunque
desconozco
cuando
la
vendí
para
trabajar
en
Seguridad
Copora,va
;)
§
Podéis
seguirme
en
el
blog:
www.seguridadofensiva.com
§
O
contactar
conmigo
a
través
de:
@segofensiva
jsanchez@seguridadofensiva.com
2
4. §
Evolución
de
los
ataques
informá,cos
durante
el
2012
§
Incremento
del
Espionaje
Industrial,
HackBvismo
y
Ciberguerra
§
Ataques
a
grandes
empresas
como
Facebook,
Apple,
TwiHer,
New
York
Times
§
Intereses
económicos
y
polí,cos,
como
APT1,
Stuxnet
etc.
4
5. METODOLOGÍA
DE RECONOCIMIENTO
UNA
INTRUSIÓN
EXPLORACIÓN
COMPROMISO
DEL
SISTEMA
MANTENIMIENTO
DEL
ACCESO
BORRADO
DE
HUELLAS
5
7. ARQUITECTURA
§
Diferentes
nivels
de
acceso
a
recursos
Ring
3
§
Forzado
por
hardware
en
la
CPU,
ofreciendo
Ring
2
diferentes
modos
a
nivel
de
hardware
o
Ring
1 microcódigo
Ring
0
§
Organización
en
una
jerarquía
de
más
Kernel
privilegiado
(ring0)
a
menos
privilegiado
(número
de
anillo
más
alto)
DisposiBvos
§
El
anillo
0
es
el
nivel
con
la
mayoría
de
los
DisposiBvos
privilegios
e
interactua
directamente
con
el
Aplicaciones hardware
]sico,
como
la
CPU
y
memoria
§
El
anillo
0
posee
el
nivel
más
bajo
de
protección,
se
espera
que
nunca
se
cuelgue.
En
ese
caso,
todo
Más Menos
Privilegiado Privilegiado
el
sistema
caerá
con
él.
7
8. KERNEL
vs
USER
SPACE
KERNEL
SPACE USER
SPACE
El
kernel
tiene
gran
responsabilidad
en
la
utilización
del
hardware,
pero
en
especial
de
la
memoria.
Reside
siempre
en
la
memoria
principal
y
tiene
el
control
sobre
la
máquina,
por
lo
que
ningún
otro
proceso
puede
interrumpirlo.
Mientras
que
el
espacio
de
usuario
mantiene
su
propio
espacio
virtual
de
direcciones,
el
kernel
ocupa
un
espacio
único
reservado
desde
el
que
provee
todos
sus
servicios.
8
11. USER
SPACE APPLICATION
read()
TCP
recv
Buffer
TCP
Process
KERNEL
SPACE
tcp_v4_rcv()
Socket
Backlog
IP
Layer ip_rcv() Memory
Kernel
Pointer
to
sogirq
Device NIC
Packet
Data
Interrupt
Handler
Poll
List
Ring
DEVICE
DRIVER Buffer
Interrupt DMA
Engine
NIC
Memory
Incoming
Packet 11
12. USER
SPACE APPLICATION
read()
TCP
recv
Buffer
TCP
Process
KERNEL
SPACE
tcp_v4_rcv()
Socket
Backlog
IP
Layer ip_rcv() Memory
Kernel
Pointer
to
sogirq
Device NIC
Packet
Data
Interrupt
Handler
Poll
List
Ring
DEVICE
DRIVER Buffer
Interrupt DMA
Engine
NIC
Memory
Incoming
Packet 12
13. USER
SPACE APPLICATION
read()
TCP
recv
Buffer
TCP
Process
KERNEL
SPACE
CONNTRACK MANGLE tcp_v4_rcv()
FILTER
Socket
Inbound
Packets Backlog
PREROUTING
forwarded
packets
forwarded
and
accepted
packets FORWARD ip_rcv()
IP
Layer Memory
local
Kernel
Pointer
to packets
sogirq
Device NIC
locally
des,ned
packets
must
pass
the
INPUT
INPUT
chains
to
reach
listening
sockets Packet
Data
Interrupt
Handler
Poll
List
Ring
DEVICE
DRIVER Buffer
Interrupt DMA
Engine
NIC
Memory
Incoming
Packet 13
14. USER
SPACE APPLICATION
read()
TCP
recv
Buffer
TCP
Process
KERNEL
SPACE
tcp_v4_rcv()
Socket
Backlog
IP
Layer ip_rcv() Memory
Kernel
Pointer
to
sogirq
Device NIC
Packet
Data
Interrupt
Handler
Poll
List
Ring
DEVICE
DRIVER Buffer
Interrupt DMA
Engine
NIC
Memory
Incoming
Packet 14
15. USER
SPACE APPLICATION
read()
TCP
recv
Buffer
TCP
Process
KERNEL
SPACE
tcp_v4_rcv()
Socket
Backlog
IP
Layer ip_rcv() Memory
Kernel
Pointer
to
sogirq
Device NIC
Packet
Data
Interrupt
Handler
Poll
List
Ring
DEVICE
DRIVER Buffer
Interrupt DMA
Engine
NIC
Memory
Incoming
Packet 15
16. DESTINOS
§
Existen
los
siguientes
des,nos
ya
incorporados:
•
ACCEPT:
nejilter
acepta
el
paquete
•
DROP:
nejilter
descarta
el
paquete
sin
ningún
otro
,po
de
procesamiento
•
QUEUE:
este
des,no
hace
que
el
paquete
sea
enviado
a
una
cola
en
el
espacio
de
usuario.
Una
aplicación
puede
usar
la
biblioteca
libipq
(parte
del
proyecto
nejilter)
para
alterar
el
paquete.
Si
no
existe
ninguna
aplicación
que
lea
la
cola,
este
des,no
equivale
a
DROP.
•
RETURN:
el
paquete
deja
de
circular
por
la
cadena
en
cuya
regla
se
ejecutó
el
des,no
RETURN.
§
Otras
extensiones
interesantes:
•
REJECT:
mismo
efecto
que
DROP,
pero
envía
un
mensaje
de
error
a
quien
lo
envió
originalmente:
tcp-‐reset
para
conexiones
tcp
denegadas,
icmp-‐port-‐
unreachable
para
sesiones
UDP
denegadas
etc.
16
17. NFQUEUE
§
NFQUEUE
permite
delegar
la
decisión
de
los
paquetes
en
el
espacio
de
usuario
§
Es
necesario
disponer
de
un
sogware
que
esté
a
la
escucha
en
la
cola
que
queramos
u,lizar,
que
obtenenga
los
paquetes
del
kernel
y
devuelva
un
veredicto
con
cada
uno
§
La
cola
es
una
lista
enlazada,
cuyos
elementos
son
el
paquete
y
metadatos,
que
posee
las
siguientes
caracterís,cas:
§
Longitud
Fija
§
Los
elementos
se
almacenan
e
indexan
con
un
entero
§
Un
paquete
es
liberado
cuando
se
devuelve
el
veredicto
desde
el
espacio
de
usuario
a
un
determinado
índice
§
Cuando
la
cola
se
llena,
no
es
posible
encolar
más
paquetes
§
Implicaciones:
§
Podemos
devolver
los
veredictos
en
el
orden
que
queramos
§
Es
posible
leer
múl,ples
pauqetes
antes
de
devolver
el
veredicto.
Si
devolvemos
los
veredictos
de
forma
lenta,
la
cola
se
llenará
y
el
comenzaremos
a
,rar
los
paquetes
nuevos
que
lleguen
a
nosotros
17
19. FAKE
SSH
SOURCE
Atacante
$
_
Servidor
SSH
-‐
Ocultaremos
nuestra
direción
IP
de
origen
y
podremos
modificarla
con
cualquier
otro
valor
que
necesitemos
en
nuestra
máquina
comprome,da
Servidor
SSH.
-‐
Ú,l
para
saltarte
filtros
o
para
no
llamar
la
atención
del
administrador.
19
20. From
kernel
Space
to
user
Heaven
How
i
met
your
packet
-‐
LIVE
DEMO
-‐
21. PORT
KNOCKING
-‐
El
Port
Knocking
es
una
técnica
para
establecer
una
conexión
a
un
ordenador
de
la
red
que
no
,ene
puertos
abiertos.
SERVIDOR
0
1
2
3
4
5
6
7
8
9
.
.
n
-‐
Antes
de
que
una
conexión
se
establezca,
los
puertos
se
abren
mediante
una
secuencia,
que
es
una
serie
de
intentos
de
conexión
para
puertos
cerrados.
21
22. PORT
KNOCKING
-‐
Un
host
remoto
genera
y
envía
una
secuencia
con
el
Din
de
manipular
las
reglas
del
servidor
de
Direwall
para
abrir
uno
o
más
puertos
especíDicos,
o
lanzar
un
servicio
en
el
servidor
de
destino.
SERVIDOR
IP
DF
SYN
PAYLOAD
CON
PASSWD
15
ICMP
ECHO
MONITOR
UDP
PAYLOAD
CON
COMANDO 79
-‐
Estas
llamadas
son
escuchadas
por
un
programa
que
se
está
ejecutando
en
el
servidor
remoto,
que
supervisa
las
conexiones
y
abrirán
un
puerto
en
caso
de
que
la
secuencia
sea
correcta.
22
23. PORT
KNOCKING
-‐
Una
vez
que
el
puerto
deseado
se
abre,
el
host
remoto
puede
establecer
una
conexión
y
comenzar
una
sesión.
Podríamos
utilizar
otra
secuencia
para
cerrar
el
puerto.
SERVIDOR
COMUNICACIÓN
ACTIVA
SSH
FUNCIONANDO
22
-‐
No
es
estrictamente
necesario
que
desarrollemos
una
secuencia
de
intentos
que
venir
como
una
serie
de
intentos
de
conexión.
Por
ejemplo,
podemos
encapsular
una
serie
de
datos
útiles
en
un
paquete
a
un
puerto
cerrado
o
utilizar
ICMP.
23
24. From
kernel
Space
to
user
Heaven
How
i
met
your
packet
-‐
LIVE
DEMO
-‐
24
25. BLACK
OPS
OF
DNS
§
El
DNS
Tunneling
permite
crear
un
tunel
IP
sobre
el
protocolo
DNS,
para
conseguir
salir
a
Internet
en
un
entorno
donde
al
único
servicio
que
podemos
acceder
es
un
DNS
que
nos
resuelve
direcciones
de
Internet.
§
Dos
formas
de
encapsular
datos
en
DNS:
§
Base64
para
registros
TXT
(~220
bytes/paquete)
§
Base32
para
registros
CNAME
(~110
bytes/paquete)
DNS
SERVER
PROXY INTERNET
DNS
SERVERS
ATACANTE
DESTINO
25
27. TRACEROUTE
FUN
-‐
Asumimos
que
el
puerto
que
ICMP
TIME
UDP
TTL=1 estamos
utilizando
no
se
encuentra
EXCEEDED
Origen
Router
Hop
a
la
escucha
y
que
el
destino
Dinal
generará
automáticamente
el
ICMP.
Pero
¿qué
ocurriría
si
la
máquina
destino
estuviera
escuchando
y
ICMP
TIME
UDP
TTL=2
EXCEEDED
Router
Hop Router
Hop
respondiera
como
un
salto
Origen intermedio?
ICMP
TIME
UDP
TTL=3
EXCEEDED
Router
Hop Router
Hop Router
Hop
Origen
ICMP
PORT
UDP
TTL=4
UNREACHABLE
Origen Router
Hop Router
Hop Router
Hop DesBno
27
28. TRACEROUTE
FUN
-‐
Asumimos
que
el
puerto
que
ICMP
TIME
UDP
TTL=1 estamos
utilizando
no
se
encuentra
EXCEEDED
Origen
Router
Hop
a
la
escucha
y
que
el
destino
Dinal
generará
automáticamente
el
ICMP.
Pero
¿qué
ocurriría
si
la
máquina
destino
estuviera
escuchando
y
ICMP
TIME
UDP
TTL=2
EXCEEDED
Router
Hop Router
Hop
respondiera
como
un
salto
Origen intermedio?
-‐
LIVE
DEMO
-‐
28
33. §
Aunque
cada
día
es
más
sencillo
buscar
un
target
con
una
versión
específica.
33
34. NMAP
Device
Type:
general
purpose
Running:
Microsog
Windows
7|Vista|2000
OS
CPE:
cpe:/o:microsog_7::professional
OS
details:
Microsog
Windows
7
Professional,
Microsog
Windows
Vista
SP0
or
SP1
UpBme
guess:
2.196
days
(since
Mon
Feb
4
12:14:01
2013)
Network
Distance:
1
hop
TCP
Sequence
PredicBon:
Difficulty=262
(Good
Luck!)
IP
ID
Sequence
GeneraBon:
Incremental
Service
Info:
OS:
Windows;
CPE:
cpe:/o:microsog:windows
§
Nos
centraremos
en
el
resultado
interesante
para
el
reconocimiento
remoto
del
sistema
opera,vo,
como:
-‐
Device
Type
-‐
Network
Distance
-‐
Running
-‐
TCP
Sequence
Predic,on
-‐
OS
Details
-‐
IP
ID
Sequence
Genera,on
-‐
Up,me
Guess
34
38. MÉTODOS
UTILIZADOS
POR
NMAP
Nmap
envía
15
pruebas
TCP,
UDP
e
ICMP,
tanto
a
puertos
abiertos
del
sistema,
como
a
cerrados.
Estas
pruebas
están
especialmente
diseñadas
para
explorar
ambigüedades
respecto
a
los
estándares
del
RFC
y
escucha
las
respuestas.
§
SEQUENCE
GENERATION
(SEQ,
OPS,
WIN
y
T1):
se
envían
6
pruebas
TCP
a
un
puerto
que
haya
comprobado
que
esté
abierto.
Estos
paquetes
varían
en
las
opciones
TCP
y
el
valor
de
ventana:
§
Paquete
1:
WS(10),NOP,MSS(1460),TS(Tval:0xFFFFFFFF.
Tsecr:0),
SACK
y
W(1)
§
Paquete
2:
MSS(1400),
WS(0),SACK,
TS(Tval:0xFFFFFFFF.
Tsecr:0),EOL
y
W(63)
§
Paquete
3:
TS(Tval:0xFFFFFFFF.
Tsecr:0),NOP,NOP,WS(5),NOP,MSS(640)
y
W(4)
§
Paquete
4:
SACK,
TS(Tval:0xFFFFFFFF.
Tsecr:0),WS(10),EOL
y
W(4)
§
Paquete
5:
MSS(536),SACK,
TS(Tval:0xFFFFFFFF.
Tsecr:0),
WS(10),EOL
y
W(16)
§
Paquete
6:
MSS(265),SACK,
TS(Tval:0xFFFFFFFF.
Tsecr:0)
y
W(512)
§
ICMP
ECHO
(IE):
se
realiza
el
envío
de
dos
paquetes
ICMP
ECHO.
38
39. §
TCP
explicit
congesBon
noBficaBon
(ECN):
Se
realiza
el
envío
a
un
puerto
abierto,
con
los
flags
ECN
CWN
y
ECE
ac,vados,
WS(10),
NOP,
MSS(1460),SACK,NOP,NOP
y
W3)
§
TCP
T2-‐T7:
cada
prueba
se
genera
realizando
el
envío
de
un
paquete
TCP.
Salvo
uno
de
ellos,
las
opciones
en
este
caso
corresponden
a
WS(10),
NOP,
MSS(265),
TS
(Tval:
0xFFFFFFFF,
Tsecr:0).
§
T2:
sin
flags,
IP
DF
y
W(128)
a
un
puerto
abierto
§
T3:
SYN,
FIN,
URG,
PSH
y
W(256)
a
un
puerto
abierto
§
T4:
ACK
con
IP
DF
y
W(1024)
a
un
puerto
abierto
§
T5:
SYN
con
W(31337)
a
un
puerto
cerrado
§
T6:
ACK
con
IP
DF
y
W(32768)
a
un
puerto
cerrado
§
T7:
FIN,
PSH,
URG
con
W(65535)
a
un
puerto
cerrado
§
UDP:
se
trata
de
un
paquete
UDP
enviado
a
un
puerto
cerrado.
El
payload
del
paquete
consisten
en
el
carácter
‘C’
(0x43)
repeBdo
300
veces.
Si
el
puerto
está
cerrado
y
no
hay
un
firewall
entre
medias,
se
espera
recibir
un
paquete
ICMP
port
unreachable
de
respuesta.
39
40. ANÁLISIS
DE
LAS
RESPUESTAS
Fingerprint Linux 2.6.17 - 2.6.24
Class Linux | Linux | 2.6.X | general purpose
SEQ(SP=A5-D5%GCD=1-6%ISR=A7-D7%TI=Z%II=I%TS=U)
OPS(O1=M400C%O2=M400C%O3=M400C%O4=M400C%O5=M400C%O6=M400C)
WIN(W1=8018%W2=8018%W3=8018%W4=8018%W5=8018%W6=8018)
ECN(R=Y%DF=Y%T=3B-45%TG=40%W=8018%O=M400C%CC=N%Q=)
T1(R=Y%DF=Y%T=3B-45%TG=40%S=O%A=S+%F=AS%RD=0%Q=)
T2(R=N)
T3(R=Y%DF=Y%T=3B-45%TG=40%W=8018%S=O%A=S+%F=AS%O=M400C%RD=0%Q=)
T4(R=Y%DF=Y%T=3B-45%TG=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)
T5(R=Y%DF=Y%T=3B-45%TG=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)
T6(R=Y%DF=Y%T=3B-45%TG=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)
T7(R=Y%DF=Y%T=3B-45%TG=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)
U1(DF=N%T=3B-45%TG=40%IPL=164%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)
IE(DFI=N%T=3B-45%TG=40%CD=S)
Destacaremos: Aunque
hay
muchas
más:
§
TCP
ISN
greatest
common
divisor
(GDC) §
TCP
ISN
counter
rate
(ISR)
§
TCP
IP
ID
sequence
genera,on
alg
(TI) §
ICMP
IP
ID
sequence
genera,on
alg
(II)
§
TCP
,mestamp
op,on
alg
(TS) §
Shared
IP
ID
sequence
Boolean
(SS)
§
TCP
Op,ons
(O,
O1-‐O6) §
Don’t
Fragment
ICMP
(DFI)
§
TCP
ini,al
Window
Size
(W,
W1-‐W6) §
Explicit
conges,on
no,fica,on
(C)
§
Responsiveness
(R) §
TCP
miscellaneous
quirks
(Q)
§
IP
don’t
fragment
bit
(DF) §
TCP
sequence
number
(S)
§
IP
ini,al
,me-‐to-‐live
guess
(TG) §
etc. 40
43. FORMAS
DE
PROTEGERSE
§
Existen
una
serie
de
herramientas
an,guas
que
permi}an
defenderse
y
falsear
las
respuestas
de
los
escaneos
de
la
herramienta
nmap.
Algunas
de
ellas
son:
•
IP
Personality:
se
trata
de
un
módulo
de
nejilter
solamente
disponible
para
la
versión
2.4
del
Kernel
de
Linux,
que
permite
variar
ciertos
parámetros
del
comportamiento
de
la
pila
TCP/IP
y
modificar
la
‘personalidad’
de
nuestro
equipo.
•
Stealth
Patch:
parche
disponible
para
el
kernel
2.2.x
•
Fingerprint
Fucker:
módulo
de
kernel
para
versiones
2.2.x
que
permite
variar
el
comportamiento
de
las
respuestas
de
nuestro
equipo.
Se
trata
también
de
un
módulo
de
kernel.
Sólo
responde
a
ciertas
pruebas
an,guas
de
nmap
(T1,
T2
y
T7).
•
IPLog:
es
un
logger
que
permite
detectar
escaneos
(XMAS,
FIN,
SYN…).
Permite
engañar
a
nmap
a
través
de
la
opción
‘-‐z’.
•
Blackhole:
opción
existente
en
el
kernel
*BSD
que
permite
manejar
el
comportamiento
de
las
respuestas
del
equipo
cuando
alguien
se
conecta
a
puertos
TCP/UDP
cerrados. 43
47. p0f
-‐
Los
modos
en
que
p0f
nos
permite
para
realizar
el
análisis
del
sistema
opera,vo
son
los
siguientes:
§
SYN
Mode
§
SYN+ACK
Mode
§
RST+
Mode
-‐
Escaneo
pasivo
-‐
No
se
envía
tráfico
por
la
red
-‐
No
detectable
47
48. FORMATO
DE
FIRMAS
8192:32:1:48:M*,N,N,S:.:Windows:98
Sistema
Opera,vo
-‐
Familia
-‐
Versión
Tamaño Quirks
-‐
Datos
en
paquetes
SYN
-‐
Opciones
después
del
EOL
-‐
Campo
IP
ID
a
cero
Bit
DF
(0/1)
-‐
ACK
dis,nto
de
cero
-‐
Flags
no
habituales
TTL
Inicial
-‐
Decodificación
de
opciones
errónea
Window
Size Opciones
TCP
y
con
su
orden
-‐
*
Cualquier
valor
-‐
N:
NOP
-‐
%nnn
Valor
múl,plo
de
nnn
-‐
E:
EOL
-‐
Sxx
Múl,plo
de
MSS
-‐
Wnnn:
WS
-‐
Txx
Múl,plo
de
MTU
-‐
Mnnn:
MSS
-‐
xxx
Valor
concreto
-‐
S:
SACK
-‐
T
/
T0:
Timestamp
-‐
?n
48
50. SOURCEFIRE
La
tecnología
Sourcefire
FireSight
está
incorporada
en
la
úl,ma
generación
de
sensores
de
Sourcefire,
proporcionando
inteligencia
a
red
y
contexto,
a
través
de
un
motor
de
detección
inteligente
que
permite,
entre
otras
funciones,
obtener
información
del
sistema
opera,vo
de
las
máquinas
de
nuestra
red.
Fichero:
rna_fingerprints.oujile
50