
{"id":311,"date":"2008-01-28T07:57:47","date_gmt":"2008-01-28T10:57:47","guid":{"rendered":"http:\/\/www.talsoft.com.ar\/site\/?p=311"},"modified":"2008-01-28T07:57:47","modified_gmt":"2008-01-28T10:57:47","slug":"%c2%bfport-knocking-ofuscacion-o-capa-de-seguridad","status":"publish","type":"post","link":"https:\/\/www.talsoft.com.ar\/site\/es\/%c2%bfport-knocking-ofuscacion-o-capa-de-seguridad\/","title":{"rendered":"\u00c2\u00bfPort Knocking&#8230; ofuscaci\u00c3\u00b3n o capa de seguridad?"},"content":{"rendered":"<p>El objeto de este art\u00c3\u00adculo es recordar el concepto de \u00abPort Knocking\u00bb y<br \/>\nsus  implicaciones de seguridad para en un posterior art\u00c3\u00adculo reflexionar<br \/>\nsobre  \u00abSingle Packet Authorization\u00bb (SPA). \u00abPort Knocking\u00bb no es un<br \/>\ningenio nuevo,  lleva con nosotros desde 2003, pero es un tema recurrente<br \/>\nen listas de correo  y discusiones sobre seguridad.<\/p>\n<p>\u00c2\u00bfQu\u00c3\u00a9 es \u00abPort Knocking\u00bb?<\/p>\n<p>Todos  hemos visto pel\u00c3\u00adculas en las que alguien golpea cierta secuencia<br \/>\nen la puerta  de una taberna y si la secuencia era correcta el tabernero<br \/>\nabre una rendija  para solicitar una clave verbal. Si la secuencia de<br \/>\nllamada no era correcta,  ninguna medida se toma y el interesado cree que<br \/>\nla taberna se halla cerrada.  El concepto de \u00abPort Knocking\u00bb es<br \/>\nexactamente an\u00c3\u00a1logo.<\/p>\n<p>En inform\u00c3\u00a1tica,  este concepto consiste en enviar paquetes a ciertos<br \/>\npuertos en un orden  espec\u00c3\u00adfico con el fin de abrir un puerto en<br \/>\nconcreto. Este \u00c3\u00baltimo puerto se  halla cerrado por un cortafuegos siempre<br \/>\ny cuando no se realice el barrido de  puertos siguiendo la secuencia<br \/>\nparticular. De esta forma, si un atacante  efect\u00c3\u00baa un escaneo del<br \/>\nsistema, el puerto aparecer\u00c3\u00a1 cerrado aun estando el  servicio asociado a<br \/>\n\u00c3\u00a9l en funcionamiento, el cortafuegos hace un simple DROP  si no se ha<br \/>\nefectuado la secuencia de barrido previa.<\/p>\n<p>Tomemos como  ejemplo un demonio sshd escuchando en el puerto 22\/TCP.<br \/>\nElegimos como  secuencia de barrido la sucesi\u00c3\u00b3n 43, 6540 y 82. El puerto<br \/>\n22 se abrir\u00c3\u00a1 si, y  solo si, un usuario inicializa conexiones TCP hacia<br \/>\nlos puertos 43, 6540 y 82  en ese orden exacto. En caso contrario el<br \/>\nusuario recibir\u00c3\u00a1 como respuesta un  RST\/ACK cuando intenta comenzar una<br \/>\nconexi\u00c3\u00b3n hacia el puerto 22.<\/p>\n<p>Si la  secuencia correcta de inicializaciones ha sido efectuada, el<br \/>\npuerto 22 se  abrir\u00c3\u00a1 durante un lapso de tiempo determinado y \u00c3\u00banicamente<br \/>\npara la IP que  complet\u00c3\u00b3 la secuencia previa. Una vez el puerto 22 se<br \/>\nhalle abierto, se  pueden llevar a cabo medidas adicionales  de<br \/>\nautenticaci\u00c3\u00b3n.<\/p>\n<p>Pol\u00c3\u00a9mica<\/p>\n<p>Muchos son los que defienden que  \u00abPort Knocking\u00bb no es una capa de<br \/>\nseguridad sino una medida de ofuscaci\u00c3\u00b3n  (\u00absecurity by obscurity\u00bb). Lo<br \/>\ncierto es que hay argumentos a favor y en  contra de ambas afirmaciones.<\/p>\n<p>Acudiendo a las definiciones cl\u00c3\u00a1sicas de  los tipos de autenticaci\u00c3\u00b3n<br \/>\n(algo que sabes, algo que eres y algo que tienes),  este mecanismo se<br \/>\nencuadrar\u00c3\u00ada en el primer conjunto. Ahora bien, si un  atacante conociera<br \/>\nla existencia de esta medida y fuera capaz de escuchar el  tr\u00c3\u00a1fico (en<br \/>\nlado cliente o servidor), esta medida de seguridad ser\u00c3\u00ada tan  d\u00c3\u00a9bil como<br \/>\nlas contrase\u00c3\u00b1as que viajan en claro.<\/p>\n<p>Por tanto, como muchas  otras t\u00c3\u00a9cnicas, se trata de una l\u00c3\u00adnea de defensa<br \/>\nque de manera aislada puede  resultar muy d\u00c3\u00a9bil, pero que junto con<br \/>\nmedidas adicionales puede proporcionar  un nivel de robustez aceptable.<\/p>\n<p>Consideraciones de seguridad<\/p>\n<p>*  Un atacante siempre podr\u00c3\u00ada intentar un ataque por fuerza bruta con el<br \/>\nfin de  descubrir la secuencia de puertos correcta, no obstante este<br \/>\nataque ser\u00c3\u00ada  f\u00c3\u00a1cilmente detectado teniendo en cuenta su naturaleza<br \/>\nruidosa. Para una  secuencia de 3 puertos, si el ataque recorre el rango<br \/>\nde puertos 1 a 65535,  esto implica que el ataque ser\u00c3\u00ada del orden de<br \/>\n655.353 tentativas, teniendo  una esperanza de la mitad de este valor.<br \/>\nPor tanto, como media, ser\u00c3\u00adan  necesarios unos 140 billones de paquetes<br \/>\nhasta conseguir la apertura del  puerto deseado. Obviamente, esto se<br \/>\npuede complicar mucho m\u00c3\u00a1s incrementando  el n\u00c3\u00bamero de puertos de la<br \/>\nsecuencia.<\/p>\n<p>* Si un atacante ha conseguido  la secuencia de puertos, nada le impide<br \/>\nhacer un \u00abreplay\u00bb de la secuencia  capturada contra el servidor para as\u00c3\u00ad<br \/>\nabrir el puerto. Ser\u00c3\u00ada por tanto  interesante que la secuencia mutara con<br \/>\nel tiempo, que se hiciera alg\u00c3\u00ban tipo  de Hash con informaci\u00c3\u00b3n adicional<br \/>\n(temporal, etc.) o alguna otra medida para  impedir los ataques por<br \/>\n\u00abreplay\u00bb. No obstante ello implicar\u00c3\u00ada sincronizaci\u00c3\u00b3n  cliente-servidor<br \/>\ny\/o involucrar otros campos de los paquetes que no fueran  tan s\u00c3\u00b3lo los<br \/>\n16bits del puerto destino en la cabecera TCP. Como consecuencia  de estas<br \/>\nmodificaciones, la medida se hace dif\u00c3\u00adcilmente escalable en  situaciones<br \/>\ndonde hay un gran n\u00c3\u00bamero de clientes.<\/p>\n<p>* Mucho m\u00c3\u00a1s sencillo  es hacer una denegaci\u00c3\u00b3n de servicio. Debido al<br \/>\nlapso existente entre cada  inicializaci\u00c3\u00b3n de conexi\u00c3\u00b3n en la secuencia,<br \/>\nun atacante puede simular y  enviar paquetes para interrumpir la<br \/>\nsecuencia que est\u00c3\u00a1 construyendo un  usuario leg\u00c3\u00adtimo. As\u00c3\u00ad, nada impide a<br \/>\nun atacante el emplear herramientas como  hping para forjar paquetes con<br \/>\nla direcci\u00c3\u00b3n IP de un usuario leg\u00c3\u00adtimo y  enviar un flujo continuo hacia<br \/>\npuertos aleatorios de la m\u00c3\u00a1quina servidor para  que dicho usuario<br \/>\nleg\u00c3\u00adtimo jam\u00c3\u00a1s sea capaz de completar una secuencia  v\u00c3\u00a1lida.<\/p>\n<p>* Por \u00c3\u00baltimo en esta lista no exhaustiva de reflexiones, para  un<br \/>\nobservador del tr\u00c3\u00a1fico de red, un \u00abPort Knocking\u00bb es indistinguible  de<br \/>\nun escaneo de puertos. Muchos IDS detectan los escaneos de puertos  y<br \/>\nalgunos no tienen forma de diferenciar lo que es un \u00abPort Knocking\u00bb  de<br \/>\nlo que es un escaneo. Si el umbral de paquetes para alertar de  un<br \/>\nescaneo de puertos es lo suficientemente bajo, el \u00abport knocking\u00bb  podr\u00c3\u00ada<br \/>\nintroducir ruido no deseado en los logs del  IDS.<\/p>\n<p>Aplicaciones<\/p>\n<p>* Imaginemos que deseamos correr un servidor SSH  para compartir archivos<br \/>\ncon nuestros amigos. No deseamos que gusanos,  automatismos y usuarios<br \/>\nmaliciosos encuentren el puerto del servidor SSH  abierto en sus escaneos<br \/>\nde reconocimiento para posteriormente lanzar un  ataque por fuerza bruta<br \/>\nque consume recursos y podr\u00c3\u00ada dar lugar a una  intrusi\u00c3\u00b3n. En este caso<br \/>\npodr\u00c3\u00adamos emplear \u00abport knocking\u00bb para evitar  \u00abautomatismos tontos\u00bb.<br \/>\nObviamente, tras el \u00abPort Knocking\u00bb deber\u00c3\u00adamos tener  como m\u00c3\u00adnimo una<br \/>\nautenticaci\u00c3\u00b3n por usuario\/contrase\u00c3\u00b1a, y adem\u00c3\u00a1s,  deseablemente,<br \/>\nautenticaci\u00c3\u00b3n basada en alg\u00c3\u00ban algoritmo de clave  p\u00c3\u00bablica.<\/p>\n<p>* Una aplicaci\u00c3\u00b3n m\u00c3\u00a1s oscura, y probablemente m\u00c3\u00a1s popular, del  \u00abPort<br \/>\nKnocking\u00bb es como m\u00c3\u00a9todo de ocultaci\u00c3\u00b3n de puertas traseras  (ejemplo:<br \/>\ncd00r.c). Muchos atacantes, tras haber instalado una puerta trasera  en<br \/>\nuna v\u00c3\u00adctima, la camuflan mediante \u00abPort Knocking\u00bb, de esta  forma<br \/>\ncualquiera que intente detectar anomal\u00c3\u00adas basadas en la apertura  de<br \/>\nnuevos puertos dif\u00c3\u00adcilmente detectar\u00c3\u00a1 la intrusi\u00c3\u00b3n. As\u00c3\u00ad, los  servicios<br \/>\nbasados en herramientas como Nesus para detectar alteraciones en  ciertas<br \/>\nredes presentan una gran punto d\u00c3\u00a9bil ante dichos ingenios y  los<br \/>\nprofesionales de la seguridad no deber\u00c3\u00adan tomar sus resultados  como<br \/>\nverdades absolutas.<\/p>\n<p>Conclusi\u00c3\u00b3n<\/p>\n<p>\u00abPort knocking\u00bb se basa en  la comunicaci\u00c3\u00b3n de informaci\u00c3\u00b3n en las<br \/>\ncabeceras de los paquetes, lo cual  limita severamente la cantidad de<br \/>\ninformaci\u00c3\u00b3n que puede ser transmitida, y  por tanto, su fortaleza como<br \/>\ncapa de seguridad. En una futura reflexi\u00c3\u00b3n  analizaremos otras t\u00c3\u00a9cnicas<br \/>\ncomo \u00abSingle Packet Authorization\u00bb (SPA), que  presenta grandes ventajas<br \/>\nsobre el mecanismo aqu\u00c3\u00ad estudiado.<\/p>\n<p>Fuente: Hispasec<\/p>\n","protected":false},"excerpt":{"rendered":"<p>El objeto de este art\u00c3\u00adculo es recordar el concepto de \u00abPort Knocking\u00bb y sus implicaciones de seguridad para en un posterior art\u00c3\u00adculo reflexionar sobre \u00abSingle Packet Authorization\u00bb (SPA). \u00abPort Knocking\u00bb no es un ingenio nuevo, lleva con nosotros desde 2003, pero es un tema recurrente en listas de correo y discusiones sobre seguridad. \u00c2\u00bfQu\u00c3\u00a9 es [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[3],"tags":[],"class_list":["post-311","post","type-post","status-publish","format-standard","hentry","category-articulos"],"_links":{"self":[{"href":"https:\/\/www.talsoft.com.ar\/site\/wp-json\/wp\/v2\/posts\/311","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.talsoft.com.ar\/site\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.talsoft.com.ar\/site\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.talsoft.com.ar\/site\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.talsoft.com.ar\/site\/wp-json\/wp\/v2\/comments?post=311"}],"version-history":[{"count":0,"href":"https:\/\/www.talsoft.com.ar\/site\/wp-json\/wp\/v2\/posts\/311\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.talsoft.com.ar\/site\/wp-json\/wp\/v2\/media?parent=311"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.talsoft.com.ar\/site\/wp-json\/wp\/v2\/categories?post=311"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.talsoft.com.ar\/site\/wp-json\/wp\/v2\/tags?post=311"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}