Banner 1

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

Crear tu módulo de Metasploit para ShellShock

0 comentarios
La vulnerabilidad ShellShock ha traído un nuevo caos a Internet, miles de servidores se ven comprometidos por esta vulnerabilidad, la cual dispone de diversos CVE. Si echamos un ojo por Internet podemos observar como la vulnerabilidad ha sido explotada en diversos entornos, para explotar servidores web y meter shels, a través de VMWare Fusion en los OS X de Apple, o para distribuir malware como Kaiten.


Figura 1: Crea tu módulo de Metasploit para Shellshock

En el congreso de seguridad informática Navaja Negra, celebrado en Albacete, yo quería que la gente que asistía al workshop de Metasploit pudiera entender y ver como se corresponden los módulos que ellos pueden configurar con el código que podemos desarrollar. Para esto quise tomar como base la vulnerabilidad, con el primer CVE, de ShellShock.

Mi idea fue desarrollar un módulo en vivo para explotar dicha vulnerabilidad, ya que era realmente sencillo realizarlo, y los asistentes podrían fácilmente guiarse, tal y como se pudo ver en el artículo de RetroMalware para controlar NetBus desde Metasploit. Es cierto que la gente de Rapid7 ya tiene sus módulos sobre esta vulnerabilidad realizada, pero mi idea era hacerlo un poco más sencillo para que cualquiera de los asistentes con nociones cero de Ruby pudieran seguirlo.

Figura 2: Cosas básicas para hacer un módulo de tipo exploit remoto

¿Qué necesitamos para llevar a cabo el módulo? En la imagen se puede ver que al menos la función de inicialización y la función exploit son necesarias. El objetivo de estos módulos son las de conseguir una sesión para controlar el equipo o realizar alguna acción sobre él, tras aprovechar una vulnerabilidad. Opcionalmente, podemos definir la función check, con la que podemos chequear que una vulnerabilidad existe en la máquina remota, siempre y cuando el módulo no sea client-side, ya que en este escenario no tiene sentido realizar un chequeo.

La función: initialize(info={})

Esta función permite inicializar valores al módulo y actualizar información que es heredada por el propio framework. Podemos entender que la información de ayuda e informativa que debemos proporcionar en los módulos de Metasploit debemos configurarla en esta función. Por ejemplo, cuando nosotros ejecutamos el comando info la información proporcionada por la consola se corresponde con el atributo description que previamente hemos definido, o la información sobre el autor, las referencias a los CVE, etcétera.

A continuación se presenta el código, cuya descripción corresponde con la del módulo de Rapid7. Simplemente es importante ver que en esta parte del código son datos a rellenar, y que estos datos son informativos. Hay que recordar que la función de inicialización puede tener más instrucciones relevantes, como veremos después.

Figura 3: Función de inicialización

Hasta aquí, no hemos tocado nada. Existe un método denominado register_options con el que podemos modificar los atributos configurables que tendrá mi módulo. Recordemos que por ser un módulo de tipo exploit remoto se heredan atributos propios del módulo, como por ejemplo RHOST, pero en muchas ocasiones nosotros querremos añadir atributos configurables para que un usuario pueda realizar otro tipo de acciones con esos parámetros.

Nosotros queremos varias cosas en nuestro módulo:
- El usuario pueda indicar cuál es la URI. Al atributo lo llamaremos TARGETURI.
- Que el usuario pueda seleccionar el método HTTP a utilizar (GET | POST). El atributo se llama METHOD.
- Que el usuario pueda indicar al exploit el path remoto que debe utilizar mediante el atributo RPATH.
- El usuario puede indicar el comando que quiere lanzar mediante el atributo COMMAND.
- Mediante la configuración del atributo TIMEOUT se indica el número de segundos para obtener respuesta de una petición HTTP.
- El atributo FULL es algo especial. Lo que queremos hacer es que si el parámetro FULL vale false, el módulo se comporte como una consola remota en la cual sólo se ejecutará la orden que se introduzca en COMMAND. Pero si el atributo FULL vale true, el módulo estará programado para lanzar una secuencia de acciones sobre el servidor remoto con el que se conseguirá subir una shellcode y obtendremos el control remoto de la máquina.
- El atributo NAMESHELLBIN será utilizado en caso de que FULL sea true, y proporciona el nombre que utilizaremos para crear el binario en la máquina remota.
Figura 4: Opciones nuevas en el módulo

En la imagen podemos ver que cada atributo aparte del nombre tiene una serie de información extra introducida en un listado. El primer campo true o false indica si el atributo será requerido para ejecutar el módulo o no. Cuando se ejecuta un show options vemos una columna denominada required, dónde los atributos tienen valor yes o no. El segundo campo del listado es la descripción del atributo, mientras que el tercero es el valor por defecto que tiene ese parámetro.

Figura 5: Atributos del módulo visto con show options

La función: request(command)

Antes de empezar a destripar las funciones check y exploit vamos a necesitar una función request para agilizar y no repetir código en el envío de peticiones. Esta función será utilizada para explotar la vulnerabilidad de ShellShock en su versión para Apache mod_cgi.

La función tiene una implementación básica, utiliza el método send_request_cgi para enviar la petición HTTP. Se le pasa un parámetro a la función que es el comando que se quiere ejecutar en remoto, si la vulnerabilidad está presente en el servidor remoto. A continuación se muestra el código sencillo de la función.

Figura 6: Código de request

El atributo TARGETURI, METHOD y TIMEOUT, explicados anteriormente, son utilizados para la generación del paquete.

La función: check()

La función check permitirá comprobar si el servidor remoto es vulnerable sin necesidad de dañar o aprovecharse del sistema remoto. Es cierto que check lo que está realizando es una ejecución de comandos remota, pero lo que ejecutaremos será un simple echo hola, que intentaremos ver reflejado en el body de la respuesta.

Figura 7: Código de check

Como puede verse en la función se llama a request con el comando echo hola. Si la respuesta incluye hola en el cuerpo es vulnerable. Tenemos que tener cuidado, porque si, lógicamente, la respuesta incluyera el texto “hola” porque la web tuviera dicha palabra nos aparecería como vulnerable. Lo ideal sería generar un hash o un texto que fuera “imposible” encontrar en la respuesta.

La función: exploit()

Esta función la tenemos pensada para dos cosas en esta prueba de concepto. La primera es que nos permita ejecutar comandos, por así decirlo línea a línea o petición a petición con el servidor. El segundo modo de funcionamiento se tiene pensado para que automáticamente genere las peticiones necesarias realizando lo siguiente:
1. Generar una shellcode, que definirá el usuario en el atributo PAYLOAD antes de lanzar el módulo, es decir, antes de lanzar el método exploit. 
2. Esta shellcode se transforma a base64 con la intención de poder “pegarla” con un echo en un archivo del servidor remoto. La instrucción a ejecutar en remoto sería algo tal que así echo shellcode_en_base_64 > /var/tmp/fichero_almacena_shellcode_base64. 
3. Una vez se dispone de la shellcode en un fichero en base64 se realiza su transformación a binario y se le cambia los permisos para que el nuevo binario pueda ejecutar. 
4. Por último, se realiza una petición para ejecutar ese binario, el cual lanzará la shellcode. En función del tipo de shellcode se realizará unas acciones u otras. Automáticamente el módulo de Metasploit nos lanzará por debajo el handler con el que podremos gestionar de forma trasparente las conexiones con las shellcode.
Figura 8: Generación, subida y ejecución de Shellcode, Toma de control

En el código se puede ver como se genera el payload mediante la instrucción payload.encoded_exe. Este payload se codifica en base64 almacenándolo en la variable enc. Es importante realizar el cambio de los “\n” en el base64 para que la shellcode no se rompa.

Después podemos observar las 4 peticiones que se realizan con lo comentado anteriormente. Una vez se termina la cuarta petición la shellcode se genera y se obtiene el control remoto de la máquina, si el payload seleccionado es para tomar el control, por ejemplo un meterpreter.

Configuración y ejecución

Ahora vamos a probar el módulo programado, cuyo código se puede encontrar en mi github. La configuración para probar el código en modo FULL a true, será el siguiente:
- FULL = true.
- NAMESHELLBIN = poc.
- RHOST = dirección IP servidor remoto, en este caso 192.168.56.102.
- TARGETURI = URI remota, en este caso /cgi-bin/vuln.cgi.
- PAYLOAD = linux/x86/meterpreter/reverse_tcp.
- LHOST = dirección IP máquina del atacante.
Tras lanzar el módulo con la configuración podemos obtener el control remoto de la máquina, tal y como se puede ver en la imagen.

Figura 9: Configuración y obtención del control remoto a través de ShellShock

Si elegimos la opción FULL = false, realmente podemos seleccionar en COMMAND que binario lanzar, y con RPATH cuál es la ruta remota dónde se encuentra. En el taller de Navaja Negra lo estuvimos viendo, y con las prisas las cosas no quedaron del todo claras, por eso decidí hacer este post.

Autor: Pablo González Pérez (@pablogonzalezpe)

Fuente: http://www.elladodelmal.com/2014/10/crea-tu-modulo-de-metasploit-para.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

Volatility Framework: Obteniendo el histórico de un CMD

0 comentarios
Volatility Framework permite al forense analizar en toda su dimensión el estado de la memoria RAM de un equipo en el instante concreto en el que se recogió la evidencia. Volatility se encuentra escrito en Python, y mediante la ejecución de plugins sobre un fichero de captura de RAM se puede saber todo tipo de cosas, como por ejemplo:
  • Procesos en ejecución en la máquina en ese instante.
  • Ficheros abiertos por los procesos.
  • Servicios del sistema en la máquina.
  • Extraer información de ficheros para su posterior análisis.
  • Obtención de DLLs.
  • Obtención de direcciones de memoria donde se encuentran elementos de Windows importantes (por ejemplo, hashdump o LSA Secrets).
  • Historial de ciertas aplicaciones.
  • Búsqueda de pass con strings.
  • Conexiones de red.
  • Etcétera.
Hoy vamos a ver un pequeño ejemplo de como podremos obtener el histórico de un CMD, el cual se haya en la memoria RAM, gracias a el plugin consoles de Volatility Framework.
PoC: Consoles
En primer lugar debemos tener una captura de RAM, por ejemplo en formato DMP (standard de Microsoft), el cual referenciaremos mediante el parámetro -f. La distribución que utilizaremos será Kali Linux, donde Volatility ya viene instalado por defecto. La sintaxis para realizar esta acción es vol -f consoles. Esta acción proporciona una salida, que a priori presenta un gran volumen de información. En primer lugar muestra un resumen de los ejecutables que fueron lanzados desde el CMD, indicando la dirección de memoria donde se encuentra dicha ejecución.
Si bajamos en la salida por pantalla que proporciona Volatility se puede ver el listado de los comandos ejecutados secuencialmente en esa sesión de CMD. Es importante visualizar esa lista para entender fácilmente que es lo que el usuario escribió en dicha sesión de CMD. Se puede ver lo fácil que es obtener dicha información.
SI seguimos bajando en la salida veremos lo que ha devuelto por pantalla dichos comandos que el usuario ha ejecutado. Esto es algo realmente interesante, para ver que es lo que el usuario consiguió realizar en dichas ejecuciones.


Interesante probar Volatility Framework e ir estudiando todas las posibilidades que ofrece la herramienta. En futuros posts seguiremos hablando de dicho framework.

Fuente:http://www.flu-project.com/volatility-framework-obteniendo-el-historico-de-un-cmd.html

Windows XP Command Line Syntax

0 comentarios

informacion de las sintaxys de la CMD centrada mas a lo que es XP

 Parameters    Command Line Parameters  %1  %~f1
Variables Create/read environment variables
Redirection Spooling output to a file, piping input
AND/OR Logic Conditional Execution (If-Then-Else)
Loops Loops and Subroutines
Services List of Windows XP Services

Evaluating expressions
Using brackets to Group and expand expressions
Delayed Expansion Manage and text
SET /A Environment variable arithmetic
VarSubstring Extract part of a variable (substring)
VarSearch Search & replace part of a variable
Escape chars, delimiters and quotes
Wildcards Match multiple files

Batch Files
DateMath.zip Add or subtract days from any date
GetDate.cmd Get todays date (any region, any OS)
GetTime.cmd Get the time now
datetime.vbs Get Date, Time and daylight savings
deQuote Remove quotes from a string
DelOlder.cmd Delete files more than n days old
StampMe.cmd Rename a file with the date/time
StampMS.cmd Rename with date/time (milliseconds)
Which.cmd Display full path to any command

Reference/How to
Slow Browsing Speed up network browsing
Printing Printer connections and print drivers
Qchange Script to change Printer connections
Permissions Local vs Global workgroups
Long Filenames NTFS filename issues
WorkGroups Built-In Users and Security Groups
autoexec Run commands at startup
Recovery The Recovery Console
WinXP Registry User interface settings
informacion completa: http://www.ss64.com/nt/
web : http://www.ss64.com/index.html
tambien hay otros comandos bajo consola como Bash , Power Shell , sql y bue mirenlos xD

fuente:http://darioxhcx.blogspot.com/2009/02/windows-xp-command-line-syntax.html

comandos basicos

0 comentarios

An A-Z Index of the Windows XP command line (windows xp , 2003 y 2008 server)

ADDUSERS Add or list users to/from a CSV file
ARP Address Resolution Protocol
ASSOC Change file extension associations
ASSOCIAT One step file association
AT Schedule a command to run at a later time
ATTRIB Change file attributes

BOOTCFG Edit Windows boot settings
BROWSTAT Get domain, browser and PDC info

CACLS Change file permissions
CALL Call one batch program from another
CD Change Directory - move to a specific Folder
CHANGE Change Terminal Server Session properties
CHKDSK Check Disk - check and repair disk problems
CHKNTFS Check the NTFS file system
CHOICE Accept keyboard input to a batch file
CIPHER Encrypt or Decrypt files/folders
CleanMgr Automated cleanup of Temp files, recycle bin
CLEARMEM Clear memory leaks
CLIP Copy STDIN to the Windows clipboard.
CLS Clear the screen
CLUSTER Windows Clustering
CMD Start a new CMD shell
COLOR Change colors of the CMD window
COMP Compare the contents of two files or sets of files
COMPACT Compress files or folders on an NTFS partition
COMPRESS Compress individual files on an NTFS partition
CON2PRT Connect or disconnect a Printer
CONVERT Convert a FAT drive to NTFS.
COPY Copy one or more files to another location
CSCcmd Client-side caching (Offline Files)
CSVDE Import or Export Active Directory data

DATE Display or set the date
Dcomcnfg DCOM Configuration Utility
DEFRAG Defragment hard drive
DEL Delete one or more files
DELPROF Delete NT user profiles
DELTREE Delete a folder and all subfolders
DevCon Device Manager Command Line Utility
DIR Display a list of files and folders
DIRUSE Display disk usage
DISKCOMP Compare the contents of two floppy disks
DISKCOPY Copy the contents of one floppy disk to another
DNSSTAT DNS Statistics
DOSKEY Edit command line, recall commands, and create macros
DSADD Add user (computer, group..) to active directory
DSQUERY List items in active directory
DSMOD Modify user (computer, group..) in active directory

ECHO Display message on screen
ENDLOCAL End localisation of environment changes in a batch file
ERASE Delete one or more files
EXIT Quit the current script/routine and set an errorlevel.
EXPAND Uncompress files
EXTRACT Uncompress CAB files

FC Compare two files
FDISK Disk Format and partition
FIND Search for a text string in a file
FINDSTR Search for strings in files
FOR /F Loop command: against a set of files
FOR /F Loop command: against the results of another command
FOR Loop command: all options Files, Directory, List
FORFILES Batch process multiple files
FORMAT Format a disk
FREEDISK Check free disk space (in bytes)
FSUTIL File and Volume utilities
FTP File Transfer Protocol
FTYPE Display or modify file types used in file extension associations

GLOBAL Display membership of global groups
GOTO Direct a batch program to jump to a labelled line

HELP Online Help
HFNETCHK Network Security Hotfix Checker

IF Conditionally perform a command
IFMEMBER Is the current user in an NT Workgroup
IPCONFIG Configure IP

KILL Remove a program from memory

LABEL Edit a disk label
LOCAL Display membership of local groups
LOGEVENT Write text to the NT event viewer.
LOGOFF Log a user off
LOGTIME Log the date and time in a file

MAPISEND Send email from the command line
MEM Display memory usage
MD Create new folders
MKLINK Create a symbolic link (linkd)
MODE Configure a system device
MORE Display output, one screen at a time
MOUNTVOL Manage a volume mount point
MOVE Move files from one folder to another
MOVEUSER Move a user from one domain to another
MSG Send a message
MSIEXEC Microsoft Windows Installer
MSINFO Windows NT diagnostics
MSTSC Terminal Server Connection (Remote Desktop Protocol)
MUNGE Find and Replace text within file(s)
MV Copy in-use files

NET
Manage network resources
NETDOM Domain Manager
NETSH Configure network protocols
NETSVC Command-line Service Controller
NBTSTAT Display networking statistics (NetBIOS over TCP/IP)
NETSTAT Display networking statistics (TCP/IP)
NOW Display the current Date and Time
NSLOOKUP Name server lookup
NTBACKUP Backup folders to tape
NTRIGHTS Edit user account rights

PATH Display or set a search path for executable files
PATHPING Trace route plus network latency and packet loss
PAUSE Suspend processing of a batch file and display a message
PERMS Show permissions for a user
PERFMON Performance Monitor
PING Test a network connection
POPD Restore the previous value of the current directory saved by PUSHD
PORTQRY Display the status of ports and services
PRINT Print a text file
PRNCNFG Display, configure or rename a printer
PRNMNGR Add, delete, list printers set the default printer
PROMPT Change the command prompt
PsExec Execute process remotely
PsFile Show files opened remotely
PsGetSid Display the SID of a computer or a user
PsInfo List information about a system
PsKill Kill processes by name or process ID
PsList List detailed information about processes
PsLoggedOn Who's logged on (locally or via resource sharing)
PsLogList Event log records
PsPasswd Change account password
PsService View and control services
PsShutdown Shutdown or reboot a computer
PsSuspend Suspend processes
PUSHD Save and then change the current directory

QGREP Search file(s) for lines that match a given pattern.

RASDIAL Manage RAS connections
RASPHONE Manage RAS connections
RECOVER Recover a damaged file from a defective disk.
REG Registry: Read, Set, Export, Delete keys and values
REGEDIT Import or export registry settings
REGSVR32 Register or unregister a DLL
REGINI Change Registry Permissions
REM Record comments (remarks) in a batch file
REN Rename a file or files.
REPLACE Replace or update one file with another
RD Delete folder(s)
RDISK Create a Recovery Disk
RMTSHARE Share a folder or a printer
ROBOCOPY Robust File and Folder Copy
ROUTE Manipulate network routing tables
RUNAS Execute a program under a different user account
RUNDLL32 Run a DLL command (add/remove print connections)

SC Service Control
SCHTASKS Create or Edit Scheduled Tasks
SCLIST Display NT Services
ScriptIt Control GUI applications
SET Display, set, or remove environment variables
SETLOCAL Control the visibility of environment variables
SETX Set environment variables permanently
SHARE List or edit a file share or print share
SHIFT Shift the position of replaceable parameters in a batch file
SHORTCUT Create a windows shortcut (.LNK file)
SHOWGRPS List the NT Workgroups a user has joined
SHOWMBRS List the Users who are members of a Workgroup
SHUTDOWN Shutdown the computer
SLEEP Wait for x seconds
SOON Schedule a command to run in the near future
SORT Sort input
START Start a program or command in a separate window.
SU Switch User
SUBINACL Edit file and folder Permissions, Ownership and Domain
SUBST Associate a path with a drive letter
SYSTEMINFO List system configuration

TASKLIST List running applications and services
TIME Display or set the system time
TIMEOUT Delay processing of a batch file
TITLE Set the window title for a CMD.EXE session
TOUCH Change file timestamps
TRACERT Trace route to a remote host
TREE Graphical display of folder structure
TYPE Display the contents of a text file

USRSTAT List domain usernames and last login

VER Display version information
VERIFY Verify that files have been saved
VOL Display a disk label

WHERE Locate and display files in a directory tree
WHOAMI Output the current UserName and domain
WINDIFF Compare the contents of two files or sets of files
WINMSD Windows system diagnostics
WINMSDP Windows system diagnostics II
WMIC WMI Commands

XCACLS Change file permissions
XCOPY Copy files and folders
Powered by Bad Robot
Helped by Blackubay