Consultar Métodos HTTP Soportados utilizando curl

Body

El método OPTIONS permite rápidamente preguntar a los servidores comuniquen sus métodos soportados. Aunque los métodos GET y HEAD se espera sean soportados, como los estándares sugieren su soporte es requerido, los otros métodos no necesitan ser soportados. Si el servidor receptor soporta el método OPTIONS, responde con la lista de los métodos soportados en la cabecera de repuesta Allow HTTP.

curl es herramienta de línea de comandos y una biblioteca para transferir datos con URL. Se utiliza en líneas de comando o guiones (scrtips) para transferir datos. curl también se utiliza en automóviles, televisores, encaminadores, impresoras, equipos de audio, teléfonos móviles, tabletas, dispositivos médicos, decodificadores, juegos de computadora, reproductores multimedia y es el motor de transferencia de Internet para miles de aplicaciones de software en más de veinte mil millones de instalaciones. curl es utilizado a diario por prácticamente todos los usuarios de Internet en el mundo.

Se utiliza la opción “--help” para obtener una ayuda de sus comandos disponibles.

$ curl --help

Esta no es la ayuda completa, esto está dividido en categorías. Para obtener una descripción general de todas las categorías se utiliza la opción “--help category”.

$ curl –help category

Se procede a utilizar la herramienta curl para realizar una petición utilizando el método OPTIONS.

$ curl -i -X OPTIONS concytec. gob. pe
$ curl -i -X OPTIONS minsa. gob. pe

La opción “-i”, para HTTP y FTP incluye las cabeceras de respuesta en el resultado.

La opción “-X” cambia el método utilizado cuando se inicia la transferencia.

Como se puede visualizar en los resultados correspondientes a las dos peticiones realizadas, los métodos soportados son mostrados en la cabecera de nombre “Allow:”

Si se realizar una petición a métodos no soportados, el servidor responderá con un código de estado “405 Method Not Allowed”

Fuentes:

https://www.rfc-editor.org/rfc/rfc9110.html#name-options
https://curl.se/

HTTP/3

Body

El protocolo de transporte QUIC tiene varias características deseables en un transporte para HTTP, como multiplexación de flujo, control de flujo por flujo, y establecimiento de conexión con baja latencia.

Introducción

La semántica HTTP se utiliza para una amplio rango de servicios en Internet. Esta semántica se ha utilizado más comúnmente con HTTP/1.1 y HTTP/2. HTTP/1.1 se ha utilizado en una variedad de capas de transporte y sesión, mientras HTTP/2 se ha utilizado principalmente con TLS sobre TCP. HTTP/3 admite la misma semántica a través de un nuevo protocolo de transporte: QUIC.

Versiones anteriores de HTTP

HTTP/1.1 utiliza campos de texto delimitados por espacios en blanco para transmitir mensajes HTTP. Aunque estos intercambios son legibles por los humanos, utilizar espacios en blanco para formatear mensajes conduce a una complejidad para interpretación, además de una tolerancia excesiva de comportamiento variante.

Debido a HTTP/1.1 no incluye una capa para multiplexación, múltiples conexiones TCP son utilizadas frecuentemente para atender solicitudes en paralelo. Sin embargo esto tiene un impacto negativo para el control de la congestión y la eficiencia de la red, pues TCP no comparte el control de la congestión entre múltiples conexiones.

HTTP/2 introdujo una capa de multiplexación y encuadre binario para mejorar la latencia sin modificar la capa de transporte. Sin embargo debido a la naturaleza paralela de la multiplexación en HTTP/2 no es visible en los mecanismos para recuperación de pérdidas de TCP, un paquete perdido o reordenado causa todas las transacciones activas experimenten un bloqueo, independientemente de si esa transacción se vio directamente afectada por el paquete perdido.

Delegación en QUIC

El protocolo de transporte QUIC incorpora multiplexación de flujo y control de flujo por flujo, similar al proporcionado por la capa de entramado de HTTP/2. Al proporcionar confiabilidad a nivel de flujo y control de congestión en toda la conexión, QUIC tiene la capacidad de mejorar el rendimiento de HTTP en comparación con un mapeo TCP. QUIC también incorpora TLS 1.3 en la capa de transporte, ofreciendo confidencialidad e integridad comparables con la ejecución de TLS sobre TCP, con la latencia de configuración de conexión mejorada de TCP Fast Open.

Descripción general del protocolo HTTP/3

HTTP/3 proporciona un transporte para la semántica HTTP utilizando el protocolo de transporte QUIC, además de una capa de estructura interna similar a HTTP/2.

Una vez el cliente conoce existe un servidor HTTP/3 en un determinado endpoint, abre una conexión QUIC. QUIC proporciona negociación de protocolos, multiplexación basada en flujos y control de flujo.

Dentro de cada flujo, la unidad básica de comunicación HTTP/3 es una trama. Cada tipo de trama sirve para propósitos diferentes. Por ejemplo las tramas HEADERS y DATA forman la base para las peticiones y respuestas HTTP. Las tramas aplicadas a toda la conexión se transmiten en un flujo de control dedicado.

La multiplexación de peticiones se realiza utilizando la abstracción de flujo QUIC. Cada par de petición-respuesta consume un único flujo QUIC. Las transmisiones son independientes entre si, por lo cual una transmisión bloqueada o la cual sufrió una pérdida de paquetes, no impide el progreso de otras transmisiones.

La inserción del servidor es un modo de interacción introducido en HTTP/2, la cual permite a un servidor enviar un intercambio de petición-respuesta hacia un cliente antes de el cliente realice la petición indicada. Esto compensa el uso de la red con una posible ganancia de latencia. Se utilizan varios tramas HTTP/3 para administrar la inserción del servidor, como PUSH_PROMISE, MAX_PUSH_ID y CANCEL_PUSH.

Al igual de HTTP/2, los campos de petición y respuesta se comprimen para su transmisión. Debido a HPACK se basa en la transmisión ordenada de secciones de campos comprimidos (una garantía no proporcionada por QUIC), HTTP/3 reemplaza HPACK con QPACK. QPACK utiliza flujos unidireccionales separados para modificar y rastrear el estado de la tabla de campos, mientras las secciones de campos codificados se refieren al estado de la tabla sin modificarla.

Fuentes:

https://httpwg.org/specs/rfc9114.html

¿Qué es HTTP/2?

Body

HTTP/2 reemplaza la forma sobre como HTTP se expresa "en el cable". No se trata de una nueva escritura radical del protocolo; Los métodos HTTP, los códigos de estado, y la semántica son los mismos, como consecuencia debería ser posible utilizar las mismas API como en HTTP/1.x (posiblemente con algunas pequeñas adiciones) para representar el protocolo.

El enfoque del protocolo está en el desempeño; específicamente la latencia percibida por el usuario final, el uso de recursos de red y del servidor. Uno de los objetivos principales es permitir la utilización de una única conexión desde los navegadores hacia un sitio web.

La base del trabajo fue SPDY, pero HTTP/2 ha evolucionado para tener en consideración los aportes de la comunidad, incorporando varias mejoras en el proceso.

Se sugiere consultar el sitio web oficial para obtener más detalles sobre el alcance del trabajo, así como las preguntas frecuentes.

También se sugiere leer HTTP/2 JP, mantenido por la comunidad japonesa HTTP/2.

HTTP/2 se compone de dos especificaciones:

  • Protocolo de transferencia de hipertexto versión 2 - RFC9113
  • HPACK - Compresión de encabezado para HTTP/2 - RFC7541

Se realizan seguimientos de las implementaciones conocidas de HTTP/2, las cuales pueden ser encontradas en la wiki oficial del proyecto.

Fuentes:

https://http2.github.io/
https://httpwg.org/specs/rfc9113.html
https://httpwg.org/specs/rfc7541.html

winexe

Body

Winexe permite ejecutar de manera remota, comandos en sistemas operativos Windows desde el sistema operativo GNU/Linux (y posiblemente también desde otros sistemas operativos tipo UNIX, los cuales sean capaces de construir el paquete de software Samba 4).

Samba 4 incluye la funcionalidad de Directorio Activo al servidor de impresión y archivos SMB/CIFS (Server Message Block/Common Internet File System) de fuente abierta.

Se ejecuta winexe con la opción “-h”, lo cual muestra un resumen de sus opciones.

$ winexe -h

Los siguientes comandos utilizan las mismas opciones, exceptuando el comando a utilizar en el sistema remoto.

La opción “-U” defines las credenciales de red a utilizar.

Los dobles símbolos slash definen el nombre o dirección IP del host

Entre comillas se define el comando a ejecutar en el sistema remoto

Se procede a consultar información del usuario actual e información de privilegios


$ winexe -U vagrant %vagrant //192.168 .0.70 "whoami /all"

Se procede a listar información sobre el sistema


$ winexe -U vagrant %vagrant //192.168 .0.70 "systeminfo"

Se procede a listar los procesos en ejecución


$ winexe -U vagrant %vagrant //192.168 .0.70 "tasklist /svc"

Los comandos serán ejecutados con los privilegios del usuario utilizado para establecer la conexión remota.

Fuentes:

https://sourceforge.net/projects/winexe/
https://www.kali.org/tools/winexe/

wmic

Body

La utilidad de línea de comandos WMI (WMIC), proporciona una interfaz en línea de comandos para el Instrumental de administración en Windows (WMI). WMIC es compatible con shells y comandos de utilidades existentes.

Para GNU/Linux, esta implementación del cliente DCOM/WMI se basa en fuentes Samba4. Utilizando mecanismos RPC/DCOM para interactuar con servicios WMI en máquinas con el sistema operativo Windows.

Se ejecuta la herramienta con la opción “-h”, lo cual muestra un resumen de sus principales opciones.

$ wmic -h

Se ejecutan los siguientes comandos, cuyas opciones son similares entre estos.

La opción “-U” define el nombre de usuario, precedido opcionalmente por el dominio, separando con un símbolo de porcentaje la contaseña.

Luego con dobles símbolos slash el nombre o dirección IP del host en evaluación.

Finalmente se define aquello a ejecutar en el host remoto.

Se realiza una consulta a la clase Win32_ComputerSystem, la cual representa un sistema de cómputo ejecutando Windows.


$ wmic -U vagrant% vagrant //192.168 .0.70 "select * from Win32_ComputerSystem"

Se realiza una consulta a la clase Win32_QuickFixEngineering, la cual representa una pequeña actualización de todo el sistema, aplicada al sistema operativo actual. Puntualmente a HotFixID, el cual es un identificador único asociado con una actualización particular.

$ wmic -U vagrant%vagrant //192.168.0.70 "select HotFixID FROM Win32_QuickFixEngineering"

Se realiza una consulta a la clase Win32_Process, la cual representa un proceso sobre un sistema operativo.

wmic -U vagrant%vagrant //192.168.0.70 "select * from Win32_Process"

Windows Management Instrumentation (WMI) es la infraestructura para la gestión de datos y operaciones en sistemas operativos basados en Windows. Aunque se puede escribir scripts o aplicaciones WMI para automatizar tareas administrativas en computadoras remotas, WMI también proporciona datos para administración hacia otras partes del sistema operativo, además de los productos. Por ejemplo, System Center Operations Manager o Windows Remote Management.

Fuentes:

https://learn.microsoft.com/en-us/windows/win32/wmisdk/wmic
https://learn.microsoft.com/en-us/windows/win32/cimwin32prov/win32-comp…
https://learn.microsoft.com/en-us/windows/win32/cimwin32prov/win32-quic…
https://learn.microsoft.com/en-us/windows/win32/cimwin32prov/win32-proc…
https://www.kali.org/tools/wmi/

WordlistRaider

Body

WordlistRaider es una herramienta escrita en Python, para preparar listas de palabras existentes. Como un ejemplo, si se tiene una lista de palabras de gran tamaño; de varios gigabytes; y únicamente se requieren contraseñas con una longitud mínima de ocho caracteres. La herramienta optimiza las listas de palabras y ahorra peticiones innecesarias.

Se ejecuta la herramienta con la opción “-h”, lo cual muestra un resumen de sus opciones.

$ wordlistrider -h

Kali Linux incluye el directorio “/usr/share/wordlists/”, el cual incluye listas de palabras correspondientes a algunas herramientas, como nmap, metasploit framework, etc.

$ ls -l /usr/share/wordlists

Para utilizar contraseñas con un mínimo de diez caracteres, los cuales incluyan números y caracteres especiales, se ejecuta el siguiente comando:

$ wordlistraider -w /tmp/john.lst -t /tmp/mywordlist.lst --min 10 -n true -s true

La opción “-w” define la ruta al archivo origen conteniendo una lista de palabras.

La opción “-t” define la ruta a un nuevo archivo conteniendo la lista de palabras filtrada

La opción “--min” define la longitud mínima de la contraseña. (Por defecto es 8)

La opción “-n” define la inclusión de números en la contraseña (Por defecto es falso)

La opción “-s” define la inclusión de caracteres especiales en la contraseña (Por defecto es falso)

Finalizada la ejecución de la herramienta, se creará el archivo de nombre “myworlist.lst” conteniendo las contraseñas cumpliendo con los criterios (filtros) definidos.

Fuentes:

https://github.com/GregorBiswanger/WordlistRaider

Evaluar un Caso Forense de Computadoras

Body

Existen varias etapas a realizar cuando se evalúa un caso forense:

1. Examinar inicialmente la petición de servicio del profesional forense

2. Encontrar la autoridad legal para la petición del examen forense

3. Asegurar la petición por asistencia sea asignada

4. Proporcionar una completa cadena de custodia

5. Verificar si el proceso forense; como análisis de ADN, huellas, marcas de herramientas, rastros, y cuestionamiento de documentos, necesitan ser realizados sobre la evidencia

6. Verificar si existe la posibilidad de seguir métodos para investigación, como enviar una orden para preservación hacia un proveedor de servicios de Internet, identificar ubicaciones de almacenamiento remotas, y obtener correo electrónico

7. Identificar la relevancia de varios componentes periféricos, como tarjetas de crédito, cheques, escáneres, y cámaras, para la escena del incidente

8. Establecer la potencial evidencia a buscar

9. Obtener detalles adicionales como direcciones de correo electrónico, ISP utilizado, y nombres de usuario

10. Evaluar los niveles de habilidad de los usuarios, para identificar su experiencia en destruir u ocultar la evidencia

11. Establecer el orden para analizar la evidencia

12. Identificar si se requiere personal adicional

13. Identificar si se requiere equipo adicional

Fuentes:

https://forensics.wiki/

Metodología para Investigación Forense

Body

Otro componente subyacente para una investigación forense es el desarrollo de una metodología. Esta no es más a un conjunto de pautas utilizadas para mantener la consistencia.

Puede resultar muy difícil desarrollar una metodología para investigaciones forenses de computadoras, porque existen muchas variables en los casos. Pero existen dos cosas los cuales pueden dar fundamento a un análisis, además de una construcción de casos infalibles: definir la metodología y trabajar en consecuencia. Al definir una metodología, el profesional puede tener una visión general sobre como se deben manejar los casos forenses en general, aunque cada caso se maneja de manera diferente.

La metodología también puede utilizarse como punto de referencia, y el investigador puede trabajar según las etapas indicadas:

Un profesional sigue etapas estándar para preparar un caso forense. La mayoría de estas siguen siendo las mismas para resolver cualquier tipo de caso. Son los siguientes:

1. Evaluar inicialmente el caso: El investigador debe hacer preguntas relacionadas, y documentar las respuestas de las personas. Los profesionales en seguridad de la empresa pueden relacionar las preguntas con la captura de equipos y componentes de cómputo. Los profesional deben verificar la función de la computadora intervenida, además de las pruebas relacionadas con el caso.

2. Determinar un diseño o enfoque preliminar para el caso: Durante este etapa, el profesional prepara un esquema general para investigar el caso. En el escenario donde un empleado viole la política de la compañía, esta etapa se ocupa en determinar si la computadora del empleado puede ser confiscada durante el horario laboral, o si un profesional forense debe esperar hasta después del horario de oficina o fin de semana.

3. Preparar un diseño detallado: El profesional perfecciona un esquema general preparado durante la etapa anterior. Planifica las etapas detalladss, teniendo en consideración el tiempo, recursos, y dinero estimados necesarios para completar cada etapa. Esto ayuda al profesional forense a realizar un seguimiento del progreso de una investigación, además de garantiza existan controles adecuados en caso desviarse del plan.

4. Determinar cuales recursos se requieren: El tipo de software utilizado para la investigación varía según el sistema operativo utilizado por el sospechoso.

5. Obtener una unidad de almacenamiento conteniendo evidencia: El profesional confisca los diferentes tipos de equipos utilizados por los sospechosos del caso.

6. Copiar una unidad de almacenamiento conteniendo evidencia: El profesional crea imágenes de la evidencia obtenida durante la etapa anterior, hacia un dispositivo de almacenamiento diferente, para luego preparar una copia forense desde el dispositivo de almacenamiento.

7. Identificar los riesgos involucrados: Un profesional puede enfrentar muchos problemas mientras maneja un caso, por lo cual los profesionales deben documentar cualquier problema esperado, o limitaciones factibles de ocurrir durante una investigación. Esta documentación sobre los problemas se denomina evaluación estándar de riesgos. Por ejemplo un sospechoso podría haber establecido un esquema de inicio de sesión el cual apaga la computadora, o borra el dispositivo de almacenamiento si alguien cambia la contraseña.

8. Minimizar los riesgos: Un profesional debe buscar diferentes formas de minimizar los riesgos identificados durante la etapa anterior. Por ejemplo si el sospechoso hubiese protegido un dispositivo de almacenamiento con contraseña, el profesional deberá realizar varias copias del dispositivo antes de iniciar la investigación. Esta etapa ayudará al profesional a lograr la meta para recuperar la información.

9. Probar el diseño: El profesional necesita revisar las decisiones hechas, y las etapas dadas hasta el momento. Durante la revisión el profesional puede determinar si las etapas realizadas son correctas y pueden ser justificadas.

10. Analizar y recuperar evidencia digital: El profesional puede analizar y recuperar evidencia digital, utilizando las herramientas software, además de otros recursos determinadas en las etapas anteriores.

11. Investigar los datos recuperados: Una vez se recuperan y analizan datos, el profesional puede verlos y organizarlos, para ayudar a probar la culpabilidad o inocencia del sospechoso.

12. Completar el reporte del caso: El profesional prepara un reporte completo conteniendo información sobre aquello realizado y encontrado.

13. Criticar el caso: Este etapa se trata de una autoevaluación por parte del profesional. Una vez completada la investigación relacionada con el caso y preparado reporte, el profesional debe revisar el caso para identificar decisiones y acciones exitosas, además de trabajar en cualquier deficiencia. Esto ayudará al profesional a afrontar casos futuros.

Fuentes:

https://forensics.wiki/computer_forensics/#external-links

Diez Etapas de Preparación para una Investigación Forense de Computadoras

Body

1. No apagar ni encender la computadora, no ejecutar ningún programa ni intentar acceder hacia los datos residentes en la computadora. Un profesional forense experto tendrá las herramientas y la experiencia apropiada para evitar la sobrescritura de datos, daños por electricidad estática, u otras consideraciones.

2. Proteger cualquier medio relevante (incluyendo discos duros, computadoras portátiles, teléfonos inteligentes, DVDs, unidades USB, entre otros dispositivos), los cuales el sospechoso haya utilizado.

3. Suspender las políticas para destrucción y reciclado automático de documentos, los cuales puedan corresponder a cualquier medio o usuario relevante al momento de su emisión.

4. Identificar el tipo de datos buscados, la información buscada y el nivel de urgencia del análisis.

5. Una vez la máquina esté asegurada, obtener información sobre esta, sus periféricos, y la red hacia la cual está conectada.

6. De ser factible obtener contraseñas para acceder hacia archivos encriptados o protegidos con contraseña.

7. Compilar una lista de nombres, direcciones de correo electrónico, y cualquier otra información de identificación sobre aquellos con quienes el sospechoso podría haberse comunicado.

8. Si se accede hacia la computadora antes del profesional forense pueda obtener una imagen espejo, tener en consideración la cuenta del usuario(s) quienes la accedieron, hacia cuales archivos accedió, y cuando se produjo el acceso. Si es posible averiguar el motivo del acceso hacia la computadora.

9. Mantener una cadena de custodia para cada elemento de medio original, indicando donde estuvo el medio, en posesión de quien ha estado, y el motivo de esta posesión.

10. Crear una lista de palabras o frases clave a ser utilizada para buscar datos relevantes.

Fuentes:

https://github.com/forensicswiki/wiki

Dispositivos para Bloquear Escrituras

Body

Los dispositivos para bloquear escrituras son dispositivos los cuales permiten la adquisición de información desde un dispositivo de almacenamiento, sin la posibilidad de dañar accidentalmente su contenido. Esto se logra permitiendo el paso de comandos para lectura, pero bloqueando los comandos para escritura, siendo esto la razón de su nombre.

Existen dos maneras de crear un bloqueador de escritura: el bloqueador puede permitir todos los comandos pasen desde la computadora hacia el dispositivo de almacenamiento, excepto aquellos estando en una lista particular. Alternativamente puede bloquear específicamente los comandos de escritura, dejándo dejar pasar todo lo demás.

Se pueden utilizar para una variedad de dispositivos, desde discos duros hasta unidades USB y tarjetas de medios. Existen diferentes tipos para diferentes conexiones de dispositivos de almacenamiento.

Por ejemplo, un dispositivo para protección de bloqueo de escritura SATA, permite a un profesional forense conectar un dispositivo de almacenamiento hacia el conector SATA de una computadora, y un dispositivo de protección para bloqueo de escritura USB o Firewire, permite a un investigador conectar un dispositivo de almacenamiento hacia el puerto USB o Firewire de una computadora.

Fuentes:

https://www.nist.gov/itl/ssd/software-quality-group/computer-forensics-…
https://security.opentext.com/tableau/hardware/details/t356789iu
https://wiebetech.com/products/usb-3-0-writeblocker/
https://wiebetech.com/products/forensic-combodock-fcdv6-0/