PowerForensics: un framework en PowerShell para el forense de discos

Resultado de imagen para power forensics

PowerForensics es un framework en PowerShell desarrollado por Jared Atkinson (@jaredcatkinson) cuyo propósito es proporcionar todo lo necesario para el análisis forense del disco duro. Actualmente PowerForensics soporta sistemas de archivos NTFS y FAT y se está trabajando en el soporte para el Sistema de Archivos Extendido (Extended File System) y soporte HFS+.

Para instalarlo tenemos dos opciones:

– mediante PowerShell Gallery:
PS> Find-Module -Name *Forensic*
PS> Save-Module -Name PowerForensics -Path <path>
PS> Install-Module -Name PowerForensics

* nota: especifica ‘-Scope CurrentUser’ si quieres que sea usable por el usuario actual y se instale en %UserProfile%\Documents\WindowsPowerShell\Modules

– mediante el repositorio GitHub, bajándolo y descomprimiéndolo en el PSModulePath (normalmente en C:\Program Files\WindowsPowerShell\Modules\); o usando el instalador de Alexander Knorr:

iex (new-object System.Net.WebClient).DownloadString(“https://gist.github.com/opexxx/93fbddd30552a5f8e628ec1388e79b9f/raw/afd73bf4d9f66f03537beaf16f154acc264c5012/PowerforensicsInstall.ps1”)

Una vez instalado puedes ver todos los cmdlets con:
PS> Get-Command -Module PowerForensics

Boot Sector:

Get-ForensicMasterBootRecord - gets the MasterBootRecord from the first sector of the hard drive
Get-ForensicGuidPartitionTable - gets the GuidPartitionTable from the first sector of the hard drive
Get-ForensicBootSector - gets the appropriate boot sector (MBR or GPT) from the specified drive
Get-ForensicPartitionTable - gets the partition table for the specified drive

 
Extended File System 4 (ext4):

Get-ForensicSuperblock - returns the ext4 SuperBlock object
Get-ForensicBlockGroupDescriptor - returns the Block Group Descriptor Table entries
Get-ForensicInode - returns the Inode Table entries

New Technology File System (NTFS):

Get-ForensicAttrDef - gets definitions of MFT Attributes (parses $AttrDef)
Get-ForensicBitmap - determines if a cluster is marked as in use (parses $Bitmap)
Get-ForensicFileRecord - gets Master File Table entries (parses $MFT)
Get-ForensicFileRecordIndex - gets a file's MFT record index number
Get-ForensicUsnJrnl - getss Usn Journal Entries (parses $UsnJrnl:$J)
Get-ForensicUsnJrnlInformation - getss UsnJrnl Metadata (parses $UsnJrnl:$Max)
Get-ForensicVolumeBootRecord - gets the VolumeBootRecord from the first sector of the volume (parses $Boot)
Get-ForensicVolumeInformation - gets the $Volume file's $VOLUME_INFORMATION attribute
Get-ForensicVolumeName - gets the $Volume file's $VOLUME_NAME attribute
Get-ForensicFileSlack - gets the specified volume's slack space
Get-ForensicMftSlack - gets the Master File Table (MFT) slack space for the specified volume
Get-ForensicUnallocatedSpace - gets the unallocated space on the specified partition/volume (parses $Bitmap)

Windows Artifacts

Get-AlternateDataStream - gets the NTFS Alternate Data Streams on the specified volume
Get-ForensicEventLog - gets the events in an event log or in all event logs
Get-ForensicExplorerTypedPath - gets the file paths that have been typed into the Windows Explorer application
Get-ForensicNetworkList - gets a list of networks that the system has previously been connected to 
Get-ForensicOfficeFileMru - gets a files that have been recently opened in Microsoft Office
Get-ForensicOfficeOutlookCatalog - gets a Outlook pst file paths
Get-ForensicOfficePlaceMru - gets a directories that have recently been opened in Microsoft Office
Get-ForensicOfficeTrustRecord - gets files that have been explicitly trusted within MicrosoftOffice
Get-ForensicPrefetch - gets Windows Prefetch artifacts by parsing the file's binary structure
Get-ForensicRunKey - gets the persistence mechanism stored in registry run keys
Get-ForensicRunMostRecentlyUsed - gets the commands that were issued by the user to the run dialog
Get-ForensicScheduledJob - gets Scheduled Jobs (at jobs) by parsing the file's binary structures
Get-ForensicShellLink - gets ShellLink (.lnk) artifacts by parsing the file's binary structure
Get-ForensicSid - gets the machine Security Identifier from the SAM hive
Get-ForensicTimezone - gets the system's timezone based on the registry setting
Get-ForensicTypedUrl - gets the Universal Resource Locators (URL) that have been typed into Internet Explorer
Get-ForensicUserAssist - gets the UserAssist entries from the specified volume
Get-ForensicWindowsSearchHistory - gets the terms that have been searched for using the Windows Search feature

Application Compatibility Cache

Get-ForensicAmcache - gets previously run commands from the Amcache.hve registry hive
Get-ForensicRecentFileCache - gets previously run commands from the RecentFileCache.bcf file
Get-ForensicShimcache - gets previously run commands from the AppCompatCache (AppCompatibility on XP) registry key

Windows Registry

Get-ForensicRegistryKey - gets the keys of the specified registry hive
Get-ForensicRegistryValue - gets the values of the specified registry key

Forensic Timeline

ConvertTo-ForensicTimeline - converts an object to a ForensicTimeline object
Get-ForensicTimeline - creates a forensic timeline

Utilities

ConvertFrom-BinaryData - implements PowerForensics' BinShred API to parse binary data into an object
Copy-ForensicFile - creates a copy of a file from its raw bytes on disk 
Get-ForensicChildItem - returns a directory's contents by parsing the MFT structures
Get-ForensicContent - gets the content of a file from its raw bytes on disk
Invoke-ForensicDD - provides a bit for bit copy of a specified device

API pública 

PowerForensics se basa en una librería en C# (Assembly) que proporciona una API forense pública. Todos los cmdlets de este módulo se crean a partir de esa API pública y las tareas se pueden expandir fácilmente para crear nuevos cmdlets. Próximamente se publicará la información de la API.

Más información y proyecto en: https://github.com/Invoke-IR/PowerForensics

#HackNic

Shadow77

Blacknurse: ataque ICMP para un DoS efectivo y con poco ancho de banda

El SOC del operador danés TDC, especializado en técnicas anti-DDoS, ha observado un ataque por ICMP que es incluso efectivo si se realiza con poco ancho de banda. Lo han llamado Blacknurse y a diferencia que los ICMP floods tradicionales que utilizan el típico echo (ICMP Type 8 Code 0), éste se basa mensajes de tipo destino y puerto inalcanzables (ICMP Type 3 Code 3).

Con un ancho de banda de 15 a 18 Mbit/s es posible generar alrededor de 40 a 50K paquetes por segundo y afectar a una serie de firewalls aumentando drásticamente su carga de CPU. Cuando el ataque está en curso los usuarios del lado de la LAN ya no podrán enviar/recibir tráfico hacia/desde Internet. Todos los firewalls que hemos visto se recuperan cuando el ataque se detiene.

La mejor manera de probarlo es mediante hping3:

hping3 -1 -C 3 -K 3 -i u20

hping3 -1 -C 3 -K 3 –flood

Basado en las pruebas, un simple portátil puede producir aprox. un ataque DoS de 180 Mbit/s con esos comandos. Además los dispositivos vulnerables usan más recursos para procesar mensajes ICMP de tipo 3 (unreachable) que de tipo 8 (echo), así que como resultado empiezan a droppear paquetes antes.

De momento ya se han confirmado vulnerable los siguientes firewalls:

– Cisco ASA 5515, 5525 (configuración por defecto)
– SonicWall
– Algunos modelos/versiones de Palo Alto todavía sin especificar

La mejor manera de prevenir este ataque es deshabilitar los mensajes ICMP de tipo 3 en los interfaces WAN expuestos en Internet . Sin embargo en los ASA 5500 hacerlo puede conllevar otros problemas:

We recommend that you grant permission for the ICMP unreachable message type (type 3). Denying ICMP unreachable messages disables ICMP Path MTU discovery, which can halt IPSec and PPTP traffic. See RFC 1195 and RFC 1435 for details about Path MTU Discovery.”

Así que lo mejor es usar hardware multicore en el que Blacknurse es menos efectivo o poner un IPS delante. Por ejemplo las reglas para su detección con Snort serían:

alert icmp $EXTERNAL_NET any -> $HOME_NET any (msg:"TDC-SOC - Possible BlackNurse attack from external source "; itype:3; icode:3; detection_filter:track by_dst, count 250, seconds 1; reference:url, soc.tdc.dk/blacknurse/blacknurse.pdf; metadata:TDC-SOC-CERT,18032016; priority:3; sid:88000012; rev:1;)

alert icmp $HOME_NET any -> $EXTERNAL_NET any (msg:"TDC-SOC - Possible BlackNurse attack from internal source"; itype:3; icode:3; detection_filter:track by_dst, count 250, seconds 1; reference:url, soc.tdc.dk/blacknurse/blacknurse.pdf; metadata:TDC-SOC-CERT,18032016; priority:3; sid:88000013; rev:1;) 

Fuentes:
BlackNurse Denial of Service Attack
The Blacknurse attack (pdf)
Blacknurse official web page
Blacknurse PoC en C

#HackNic

Shadow77

Fortifica tu SSH para evitar un SSHowDowN Attack

Mostrando SSH-Showdown.png

 

El pasado mes de octubre salió a la luz una nueva debilidad en SSH y las configuraciones por defecto que millones de dispositivos IoT tienen que fue aprovechado por la botnet Mirai. Este fue uno de los vectores que se han utilizado en diferentes ataques DDoS alrededor del mundo y que ha llegado a afectar a empresas tecnológicas tan importantes como Twitter, WhatsApp o Netflix. Hoy en día, se siguen investigando todas las causas del incremento de los ataques en los que se utilizan dispositivos IoT. Una de las vías utilizadas ha sido la debilidad conocida como SSHowDown Proxy.

¿Dónde se encuentran los servicios SSH? La respuesta es fácil de entender, en la mayoría de los sistemas conectados a Internet y, es más, en la gran mayoría de los dispositivos IoT. El servicio de SSH nos lo encontramos en televisiones, circuitos de televisión, routers, vídeos, neveras, puntos de acceso y un largo etcétera de dispositivos.

La debilidad de las configuraciones de estos servicios críticos hace que SShowDown Proxy pueda ser utilizado para enviar tráfico a través de dichos dispositivos. El problema radica en los dispositivos y en su configuración por defecto.

La debilidad de las configuraciones de estos servicios críticos hace que SShowDown Proxy pueda ser utilizado para enviar tráfico a través de dichos dispositivos. El problema radica en los dispositivos y en su configuración por defecto. En como salen de las fábricas y, por supuesto, en la dificultad que tendremos para actualizar firmwares a posterioridad.

A modo de resumen, debemos tener en cuenta:

• Siempre cambiar configuración por defecto del servicio. Por ejemplo, no utilizar contraseñas por defecto, sobretodo en dispositivos conectados a Internet.

• No permitir el reenvío de tráfico TCP, es decir, directiva del fichero sshd_config AllowTcpForwarding a “No”.

• Configurar reglas de tráfico entrante en el firewall para prevenir acceso a SSH en dispositivos IoT. Esto se puede considerar.

• Considerar reglas salientes en el firewall para prevenir la creación de túneles.

• Deshabilitar el servicio SSH a no ser que sea absolutamente necesario.

• Autenticación basada en clave pública en entornos críticos. No permitir usuario y contraseña.

En el artículo de hoy, queremos hablar de una herramienta que debe ser una obligatoria de uso en los equipos de pentesting, y sobre todo en las pruebas de la gente de seguridad que podemos encontrar en un equipo de QA. Se debe revisar que las configuraciones, los algoritmos y las implementaciones utilizadas sobre los dispositivos que salen son seguras.

SSH Audit

Figura 3: SSH Audit en GitHub

En esta ocasión, ssh-audit nos permite hacer la auditoría y pasar un listado de buenas prácticas de configuración e implementación sobre un servicio SSH. La herramienta ssh-audit puede encontrarse en su Github. Las verificaciones, que a día de hoy, se encuentran disponibles en la herramienta son:

• Soporte para protocolo 1 y 2 de SSH. Se puede forzar a la herramienta a intentar conectar a través de la versión 1 del protocolo, lo cual no es seguro.

• Banner Grabbing e identificación de dispositivo y software. Además, de verificar la compresión.

• Recopilación del intercambio de claves, host-key, evaluación del cifrado y de los algoritmos que se pueden utilizar.

• Proporciona información sobre la calidad del algoritmo disponible, indicando si se debe eliminar, si no está disponible, si es débil, si no es seguro, etcétera.

• Proporciona información sobre el listado de CVE relacionados, como el Time-Based Info Leak que permite enumerar usuarios en servidores SSH.

• Analiza las implementaciones más comunes como son OpenSSH, Dropbear SSH y libssh.

Lanzamos la herramienta para que conecte a través del protocolo versión 2 de SSH y podemos ver cómo se empiezan a lanzar diferentes pruebas basadas en lo enunciado anteriormente:

Figura 4: Ejecución de SSH Audit

Los apartados que la herramienta va cubriendo con las diferentes pruebas son:

• Información general sobre la aplicación, dispositivo o sistema operativo.

• Algoritmos del intercambio de clave. Como puede verse en la imagen anterior, la herramienta comienza a darnos información de que algoritmos debemos mirar con lupa, para ver si deberíamos quitarlos de lo que ofrece nuestro servicio.

• Algoritmos de Host-Key. Como se puede ver en la imagen, nos indican si estamos utilizando pocos bits.

Figura 5: Análisis de sistemas criptográficos

• Calidad de los algoritmos de cifrado que se pueden utilizar con el SSH. Además, nos indican información tan interesante como a partir de que versión se dejó de utilizar el algoritmo.

• Recomendaciones sobre los algoritmos que nuestro servicio está ofreciendo. En este caso, la versión de OpenSSH es la 6.6.1 y podemos obtener un listado de cosas a mejorar.

Figura 6: Recomendaciones de seguridad para este SSH

Las opciones de la herramienta permiten configurar el nivel de verbose que podemos lograr, mediante el uso del parámetro -v o –verbose, podemos indicar el nivel de información (info, warn o fail) con el parámetro –level, el puerto en el que se encuentra el servicio, si el servicio se encuentra en IPv4 o IPv6, lo cual es algo interesante para los servicios que están ya en el direccionamiento IPv6. A continuación, dejo una imagen dónde podemos ver la ayuda de la herramienta.

Figura 7: Ayuda de la herramienta SSH Audit

Esta herramienta es realmente útil para los equipos de seguridad de las organizaciones, para la gente de IT y los de QA, ya que en estos ámbitos cada uno necesitará monitorizar la seguridad de los servicios SSH antes de que vayan a ser publicados, comprobar la seguridad de terceros o probar los propios desarrollos y dispositivos que se realizan “in house”. Herramienta que debemos tener a mano, ya que nos permitirá auditar un servicio crítico y de actualidad hoy día.

Por último, recuerda que si eres responsable de un servicio SSH lo suyo es que pongas medidas extras en la protección de los usuarios.

Fuente: elladodelmal.

#HackNic

Shadow77