• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Jaime Sánchez - From kernel space to user heaven [Rooted CON 2013]
 

Jaime Sánchez - From kernel space to user heaven [Rooted CON 2013]

on

  • 1,565 views

El objetivo de la ponencia es explicar las ventajas que nos va brinda la posibilidad de encolar el tráfico TCP/IP desde el espacio de kernel hacia el espacio de usuario. Esta teçnica permite gran ...

El objetivo de la ponencia es explicar las ventajas que nos va brinda la posibilidad de encolar el tráfico TCP/IP desde el espacio de kernel hacia el espacio de usuario. Esta teçnica permite gran cantidad de aplicaciones prácticas, ofensivas y defensivas, como modificar tráfico entrante/saliente en tiempo real, crear una capa de protección contra 0days hasta la publicación del parche correspondiente, detectar tráfico no autorizado como conexiones por dns tunneling etc.

Finalmente se explicará más en profundidad las diversas técnicas de detección de sistema operativo, tanto activas como pasivas, así como pruebas de concepto contra herramientas y dispositivos de seguridad conocidos, alterando los resultados a nuestra voluntad en entornos defensivos, o contra dispositivos de detección en entornos más ofensivos.

Statistics

Views

Total Views
1,565
Views on SlideShare
1,565
Embed Views
0

Actions

Likes
0
Downloads
21
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Jaime Sánchez - From kernel space to user heaven [Rooted CON 2013] Jaime Sánchez - From kernel space to user heaven [Rooted CON 2013] Presentation Transcript

    • From Kernel Sp ce To User Heaven Jaime  Sánchez   @segofensiva
    • 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.§  Comencé,  como  muchos  otros,  en  la  edad  de  oro  del  Phreak  español§  Mi  alma  sigue  siendo  Old  School,  aunque  desconozco  cuando  la  vendí  para  trabajar  en  Seguridad  Copora,va  ;)§  Estoy  tratando  de  retomar  mis  andaduras,  con  el  inicio  de  un  nuevo  blog  www.seguridadofensiva.com§  Contacto:  jsanchez@seguridadofensiva.com 2
    • §  Trabajo  actualmente  en  un  SOC  (Security  Opera,ons  Center) 3
    • §  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. 5
    • METODOLOGÍA  DE RECONOCIMIENTO UNA  INTRUSIÓN EXPLORACIÓN COMPROMISO DEL  SISTEMA MANTENIMIENTO DEL  ACCESO BORRADO  DE  HUELLAS 6
    • IN  A  NUTSHELL 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 MenosPrivilegiado Privilegiado el  sistema  caerá  con  él. 8
    • KERNEL  vs  USER  SPACEv KERNEL  SPACE:  área  protegida  donde  el  kernel  ejecuta  y  presta   sus  servicios:   *  Creación  de  procesos,  asignación  de  ,empos  de   atención  y  sincronización   *  Asignación  de  la  atención  de  la  CPU  a  los  procesos  que  lo   requieran   *  Administración  del  espacio  en  el  sistema  de  archivos:   acceso,  protección,  comunicación,  E/S  y  periféricos.   *  Ges,ón  del  hardware:  memoria,  procesasor  y  formas  de   almacenamiento v      USER  SPACE:  espacio  reservado  para  aplicaciones  del  usuario:   *  Cada  proceso  normalmente  ejecuta  su  memoria  virtual,  y  a  menos  que  se  solicite  de  forma  explícita,  no  se  puede  acceder  a  la  memoria  de  otros  procesos.   *  Comienza  cuando  el  kernel  monta  roocs.  El  primer  programa  en  ser  ejecutado  por  defecto  es  /sbin/init 9
    • WTF  !?
    • KERNEL  vs  USER  SPACE Applica,on  CodeYour  Program User  Space C  Library System  InterfaceLinux  Kernel Generic  Services Kernel  Space Device  Drivers Hardware 11
    • How i your metpacket 12
    • 13
    • 14
    • IPTables§  Necilter  permite  interceptar  y  manipular  paquetes  de  red,  permi,endo  el  manejo  en  diferentes  estados  de  procesamiento.§  El  componente  más  popular  construído  sobre  Necilter  es  iptables,  una  herramienta  de  firewall  que  permite: •  Filtrar  paquetes •  Realizar  traducciones  de  direcciones  de  red  (NAT) •  Mantener  registros  de  LOG •  Soporte  para  IPv4  e  IPv6 •  Stateless  /  Statefull  packet  filtering§  El  nombre  de  iptables  se  u,liza  de  forma  errónea  para  referirse  a  toda  la  infraestructura  ofrecida  por  el  proyecto  Necilter.§  El  proyecto  ofrece  otros  subsistemas  independientes  de  iptables,  tales  como  el  connec,on  tracking  system,  que  permite  encolar  paquetes  para  que  sean  tratados  desde  el  espacio  de  usuario. 15
    • FUNCIONAMIENTO§  Sencillez  para  la  escritura  de  reglas§  Sencillez  para  crear  nuevas  reglas,  con  frases  básicas  del  ,po: 1.  "Quiero  autorizar  el  acceso    a  mi  servidor  web  a  través  de  mi  firewall" 2.  "Quiero  autorizar  a  los  usuarios  de  la  LAN  a  conectarse  a  la  web  a  través  de  mi   firewall" 3.  "Acepto  que  gente  pueda  conectarse  al  servidor  ssh  a  través  firewall". 4.  "Quiero  que  desde  mi  firewall  se  permita  hacer  ping  a  todo  Internet."§  Así  que  una  manera  sencilla  de  clasificar  los  paquetes  que  ges,ona  un  servidor  de  seguridad  se  va  a  dividir  el  flujo  en  tres  partes: 1.  paquetes  dirigidos  al  servidor  de  seguridad  (tercer  caso) 2.  paquetes  que  pasan  por  el  firewall  (los  casos  primero  y  segundo) 3.  paquetes  emi,dos  por  el  servidor  (cuarto  caso)§  §Hay  tres  cadenas  básicas: •  INPUT:  entrada •  OUTPUT:  salida •  FORWARD:  reenvío 16
    • FUNCIONAMIENTO§  Para  los  paquetes  salientes  que  tenemos  dos  cadenas: •  Paquetes  que  llegan  desde  el  firewall:  la  cadena  OUTPUT •  Paquetes  que  pasan  por  el  firewall:  la  cadena  FORWARD§  Existe  tres  tablas  incorporadas,  cada  una  de  las  cuales  ,ene  cadenas  predefinidas: •  filter  table:  responsable  del  filtrado.  Todos  los  paquetes  pasan  a  través  de  la   tabla  de  filtros.  Con,ene  las  siguientes  cadenas  predefinidas:     INPUT  /  OUTPUT  /  FORWARD •  net  table:  responsable  de  configurar  las  reglas  de  reescritura  de  direcciones  o  de   puertos  de  los  paquetes.  El  primer  paquete  en  cualquier  conexión  pasa  por  esta   tabla:     PREROUTING  /  POSTROUTING  /  OUTPUT •  mangle  table:  responsable  de  ajustar  las  opciones  de  los  paquetes.  Todos  los   paquetes  pasan  por  esta  tabla.  Con,ene  todas  las  cadenas  predefinidas  posibles:     PREROUTING  /  INPUT  /  FORWARD  /  OUTPUT  /  POSTROUTING 17
    • DESTINOS  DE  REGLAS§  Existen  los  siguientes  des,nos  ya  incorporados: •  ACCEPT:  necilter  acepta  el  paquete •  DROP:  necilter  descarta  el  paquete  sin  ningún  otro  ,po   de  procesamiento •  QUEUE:  este  des,no  hace  que  el  paquete  sea  enviado  a   IMPORTANTE una  cola  en  el  espacio  de  usuario.  Una  aplicación  puede   usar  la  biblioteca  libipq  (parte  del  proyecto  necilter)  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: •  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. •  LOG  /  ULOG:  log  de  los  paquetes  o  mul,difusión  a  un  socket •  DNAT  /  SNAT:  reescritura  de  des,no/origen  para  traducción  NAT •  MASQUERADE:  forma  especial  de  SNAT  para  direcciones  IP  dinámicas 18
    • 13
    • NFQUEUE§  NFQUEUE  permite  delegar  la  decisión  de  los  paquetes  en  el  espacio  de  usuario§  Es  necesario  disponer  de  un  sosware  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 20
    • EJEMPLOS 21
    • SNIFFER  BÁSICO  TCP 22
    • CAPTURAR  TRAFICO  HTTP 23
    • Block  DNS  TunnelingFake  TracerouteSSH  Fake  Source 24
    • FAKE  SSH  SOURCE Atacante $  _ Router www.rootedcon.es 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. 25
    • PORT  KNOCKINGEl  Port  Knocking  es  una  técnica  para  establecer  una  conexión  a  un  ordenador  de  la  red  que  no  ,ene  puertos  abiertos. Imágenes:  www.portknocking.com 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. 26
    • 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  unico  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) 27
    • TRACEROUTE  FUN 28
    • DETECCIÓN  REMOTADEL  SISTEMA  OPERATIVO 29
    • Técnicas  de  detección  de  Sistema  opera,vo Pasivo Ac,voAnálisis  de  Tráfico Captura Pe,ciones  TCP/IP 30
    • 31
    • 32
    • TÉCNICAS  CLÁSICAS 33
    • §  Aunque  cada  día  es  más  sencillo  buscar  un  target  con  una  versión  específica. 34
    • NMAP§  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 35
    • 36
    • 37
    • 38
    • MÉTODOS  UTILIZADOS  POR  NMAP§  El  método  u,lizado  por  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.§  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) 39
    • §  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. 40
    • §  Lanzamos  el  nmap  para  detectar  sistema  opera,vo  con  la  opción  –packet-­‐trace:§  Comprobamos  si  somos  capaz  de  detectar  el  escaneo: 41
    • 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. 42
    • 43
    • FUCK  YEAH! 44
    • FUCK  YEAH! 45
    • FORMAS  DE  PROTEGERSE§  Existen  una  serie  de  herramientas  an,guas  que  permizan  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  necilter  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. 46
    • 47
    • 48
    • p0f  -­‐  Los  modos  p0f  nos  permite  para  realizar  el  análisis  del  sistema  opera,vo  son: §  SYN  Mode §  SYN+ACK  Mode §  RST+  Mode  -­‐  Escaneo  pasivo  -­‐  No  se  envía  tráfico  por  la  red  -­‐  No  detectable 49
    • FORMATO  DE  FIRMAS8192: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 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.oucile 51
    • ¿  PREGUNTAS  ? 52
    • Long    story    short: Gracias SYN ACK FIN 53