Libro: Detectando malicia (Detecting Malice, Fraud Loss Prevention eBook)

Cada día se cometen fraudes en sitios web y este libro ayuda a detectar si algo oscuro está ocurriendo en el tuyo...

Detectando Malicia, en inglés Detecting Malice, es un libro escrito por Robert "RSnake" Hansen (ha.ckers.org) para ayudar a los administradores web, los desarrolladores, el personal de operaciones y los managers de productos de seguridad en la construcción y el mantenimiento de un estado de seguridad elevado.

La comprensión de la intención del usuario es la clave para reducir los ratios de fraude en las aplicaciones web modernas. Desde pymes al gobierno, este libro abarca muchos ámbitos diferentes de fraude y cómo detectarlo en muchas capas diferentes.

Desde DNS y TCP al contenido embebido y el fingerprinting del navegador se utilizan para identificar a los usuarios que tienen más probabilidades de llegar a ser peligrosos antes de que el ataque suceda. Una gran cantidad de técnicas y ejemplos están disponibles en las más de 300 páginas de este interesante libro.


Tabla de contenidos:
 Detecting Malice: Preface
    User Disposition
    Deducing Without Knowing
    Book Overview
    Who Should Read This Book?
    Why Now?
    A Note on Style
    Working Without a Silver Bullet
    Special Thanks
  Chapter 1 - DNS and TCP: The Foundations of Application Security
    In the Beginning Was DNS
    Same-Origin Policy and DNS Rebinding
    DNS Zone Transfers and Updates
    DNS Enumeration
    TCP/IP
    Spoofing and the Three-Way Handshake
    Passive OS Fingerprinting with pOf
    TCP Timing Analysis
    Network DoS and DDoS Attacks
    Attacks Against DNS
    TCP DoS
    Low Bandwidth DoS
    Using DoS As Self-Defense
    Motives for DoS Attacks
    DoS Conspiracies
    Port Scanning
    With That Out of the Way...
  Chapter 2 - IP Address Forensics
    What Can an IP Address Tell You?
    Reverse DNS Resolution
    WHOIS Database
    Geolocation
    Real-Time Block Lists and IP Address Reputation
    Related IP Addresses
    When IP Address Is A Server
    Web Servers as Clients
    Dealing with Virtual Hosts
    Proxies and Their Impact on IP Address Forensics
    Network-Level Proxies
    HTTP Proxies
    AOL Proxies
    Anonymization Services
    Tor Onion Routing
    Obscure Ways to Hide IP Address
    IP Address Forensics
    To Block or Not?
  Chapter 3 - Time
    Traffic Patterns
    Event Correlation
    Daylight Savings
    Forensics and Time Synchronization
    Humans and Physical Limitations
    Gold Farming
    CAPTCHA Breaking
    Holidays and Prime Time
    Risk Mitigation Using Time Locks
    The Future is a Fog
  Chapter 4 - Request Methods and HTTP Protocols
    Request Methods
    GET
    POST
    PUT and DELETE
    OPTIONS
    CONNECT
    HEAD
    TRACE
    Invalid Request Methods
    Random Binary Request Methods
    Lowercase Method Names
    Extraneous White Space on the Request Line
    HTTP Protocols
    Missing Protocol Information
    HTTP 1.0 vs. HTTP 1.1
    Invalid Protocols and Version Numbers
    Newlines and Carriage Returns
    Summary
  Chapter 5 - Referring URL
    Referer Header
    Information Leakage through Referer
    Disclosing Too Much
    Spot the Phony Referring URL
    Third-Party Content Referring URL Disclosure
    What Lurks in Your Logs
    Referer and Search Engines
    Language, Location, and the Politics That Comes With It
    Google Dorks
    Natural Search Strings
    Vanity Search
    Black Hat Search Engine Marketing and Optimization
    Referring URL Availability
    Direct Page Access
    Meta Refresh
    Links from SSL/TLS Sites
    Links from Local Pages
    Users' Privacy Concerns
    Determining Why Referer Isn't There
    Referer Reliability
    Redirection
    Impact of Cross-Site Request Forgery
    Is the Referring URL a Fake?
    Referral Spam
    Last thoughts
  Chapter 6 - Request URL
    What Does A Typical HTTP Request Look Like?
    Watching For Things That Don’t Belong
    Domain Name in the Request Field
    Proxy Access Attempts
    Anchor Identifiers
    Common Request URL Attacks
    Remote File Inclusion
    SQL Injection
    HTTP Response Splitting
    NUL Byte Injection
    Pipes and System Command Execution
    Cross-Site Scripting
    Web Server Fingerprinting
    Invalid URL Encoding
    Well-Known Server Files
    Easter Eggs
    Admin Directories
    Automated Application Discovery
    Well-Known Files
    Crossdomain.xml
    Robots.txt
    Google Sitemaps
    Summary
  Chapter 7 - User-Agent Identification
    What is in a User-Agent Header?
    Malware and Plugin Indicators
    Software Versions and Patch Levels
    User-Agent Spoofing
    Cross Checking User-Agent against Other Headers
    User-Agent Spam
    Indirect Access Services
    Google Translate
    Traces of Application Security Tools
    Common User-Agent Attacks
    Search Engine Impersonation
    Summary
  Chapter 8 - Request Header Anomalies
    Hostname
    Requests Missing Host Header
    Mixed-Case Hostnames in Host and Referring URL Headers
    Cookies
    Cookie Abuse
    Cookie Fingerprinting
    Cross Site Cooking
    Assorted Request Header Anomalies
    Expect Header XSS
    Headers Sent by Application Vulnerability Scanners
    Cache Control Headers
    Accept CSRF Deterrent
    Language and Character Set Headers
    Dash Dash Dash
    From Robot Identification
    Content-Type Mistakes
    Common Mobile Phone Request Headers
    X-Moz Prefetching
    Summary
  Chapter 9 - Embedded Content
    Embedded Styles
    Detecting Robots
    Detecting CSRF Attacks
    Embedded JavaScript
    Embedded Objects
    Request Order
    Cookie Stuffing
    Impact of Content Delivery Networks on Security
    Asset File Name Versioning
    Summary
  Chapter 10 - Attacks Against Site Functionality
    Attacks Against Sign-In
    Brute-Force Attacks Against Sign-In
    Phishing Attacks
    Registration
    Username Choice
    Brute Force Attacks Against Registration
    Account Pharming
    What to Learn from the Registration Data
    Fun With Passwords
    Forgot Password
    Password DoS Attacks
    Don’t Show Anyone Their Passwords
    User to User Communication
    Summary
  Chapter 11 - History
    Our Past
    History Repeats Itself
    Cookies
    JavaScript Database
    Internet Explorer Persistence
    Flash Cookies
    CSS History
    Refresh
    Same Page, Same IP, Different Headers
    Cache and Translation Services
    Uniqueness
    DNS Pinning Part Two
    Biometrics
    Breakout Fraud
    Summary
  Chapter 12 - Denial of Service
    What Are Denial Of Service Attacks?
    Distributed DoS Attacks
    My First Denial of Service Lesson
    Request Flooding
    Identifying Reaction Strategies
    Database DoS
    Targeting Search Facilities
    Unusual DoS Vectors
    Banner Advertising DoS
    Chargeback DoS
    The Great Firewall of China
    Email Blacklisting
    Dealing With Denial Of Service Attacks
    Detection
    Mitigation
    Summary
  Chapter 13 - Rate of Movement
    Rates
    Timing Differences
    CAPTCHAs
    Click Fraud
    Warhol or Flash Worm
    Samy Worm
    Inverse Waterfall
    Pornography Duration
    Repetition
    Scrapers
    Spiderweb
    Summary
  Chapter 14 - Ports, Services, APIs, Protocols and 3rd Parties
    Ports, Services, APIs, Protocols, 3rd Parties, oh my…
    SSL and Man in the middle Attacks
    Performance
    SSL/TLS Abuse
    FTP
    Webmail Compromise
    Third Party APIs and Web Services
    2nd Factor Authentication and Federation
    Other Ports and Services
    Summary
  Chapter 15 - Browser Sniffing
    Browser Detection
    Black Dragon, Master Reconnaissance Tool and BeEF
    Java Internal IP Address
    MIME Encoding and MIME Sniffing
    Windows Media Player “Super Cookie”
    Virtual Machines, Machine Fingerprinting and Applications
    Monkey See Browser Fingerprinting Software – Monkey Do Malware
    Malware and Machine Fingerprinting Value
    Unmasking Anonymous Users
    Java Sockets
    De-cloaking Techniques
    Persistence, Cookies and Flash Cookies Redux
    Additional Browser Fingerprinting Techniques
    Summary
  Chapter 16 - Uploaded Content
    Content
    Images
    Hashing
    Image Watermarking
    Image Steganography
    EXIF Data In Images
    GDI+ Exploit
    Warez
    Child Pornography
    Copyrights and Nefarious Imagery
    Sharm el Sheikh Case Study
    Imagecrash
    Text
    Text Stenography
    Blog and Comment Spam
    Power of the Herd
    Profane Language
    Localization and Internationalization
    HTML
    Summary
  Chapter 17 - Loss Prevention
    Lessons From The Offline World
    Subliminal Imagery
    Security Badges
    Prevention Through Fuzzy Matching
    Manual Fraud Analysis
    Honeytokens
    Summary
  Chapter 18 - Wrapup
    Mood Ring
    Insanity
    Blocking and the 4th Wall Problem
    Booby Trapping Your Application
    Heuristics Age
    Know Thy Enemy
    Race, Sex, Religion
    Profiling
    Ethnographic Landscape
    Calculated Risks
    Correlation and Causality
    Conclusion
  About Robert Hansen
Web del libro: http://www.detectmalice.com/

Clonar un portal Moodle (y más) en dos patadas con wget

Andaba yo viendo una manera efectiva y rápida para clonar un sitio web, buscando la mejor herramienta tipo Teleport Pro o HTTrack, cuando un compi me comentó que wget es bastante potable incluso para spidering/crawling. Y tanto que sí. Basta echar un vistazo al manual de la herramienta para darse cuenta de que wget no sólo vale para descargar un simple fichero, si no que tiene muchísimas opciones y parámetros que se pueden adaptar según el sitio web que quieras duplicar.

Sirva de ejemplo el de esta entrada con el que es posible crear un mirror de cualquier portal que use Moodle, ya sabéis, un sistema de gestión de cursos de formación. Imaginaros lo rápido que obtendríamos una copia de un curso en concreto que nos interesara para poder consultarlo offline cuando nos vamos de viaje...

Primero obtenemos la cookie ya que, evidentemente, la autenticación en Moodle se realiza mediante un formulario de login:

wget --load-cookies my-cookies.txt \
--post-data='username=YOUR_USERNAME&password=YOUR_PASSWORD&testcookies=1'
--save-cookies=my-cookies.txt --keep-session-cookies http://moodlesite.com/

Luego, con dicha cookie, comenzamos con el mirror mediante los siguientes parámetros:

wget --load-cookies my-cookies.txt --keep-session-cookies --save-cookies my-cookies.txt\
--referer=http://moodlesite.com/login/index.php -m -E -k
--reject logout*,*cal_m*,*cal_y*,post.php*,*subscribe*,help.php*,enrol.php*
--exclude-directories=/calendar http://moodlesite.com/course/view.php?id=XXX
-m: activa el mirroring. Es equivalente a ‘-r -N -l inf –no-remove-listing’
-E: si un fichero de tipo ‘application/xhtml+xml’ o ‘text/html’ es descargado y la URL no termina con la regexp ‘\.[Hh][Tt][Mm][Ll]?’, esta opción pondrá el sufijo ‘.html’
-k: después de que la descarga se complete, convierte los enlaces para hacerlos accesibles de forma local.
--exclude-directories: directorios que el crawler saltará.
--reject: indica los ficheros que wget no salvará al disco

Y básicamente esto sería lo suficiente para empezar y hacer un mirror de un portal Moodle. Luego podríamos hacer menos "ruido" modificando el user-agent, usando un proxy (Tor!), añadiendo pausas entre descargas, etc. Así que toca empezar a cocinar algunas pruebecillas:

wget -r -l 0 -U Mozilla -t 1 -nd -D playboy.com -A jpg,jpeg,gif,png "http://www.playboy.com" -e robots=off

11 formas de seguir tus movimientos a través del navegador web

Hay distintas formas de rastrear a los usuarios cuando acceden a un sitio web en particular. Algunas de ellas son más "siniestras" que otras. La mayoría de las aplicaciones web requieren algún tipo de seguimiento de sesión para mantener el estado del usuario. Esto normalmente se realiza fácilmente utilizando cookies bien configuradas (aunque esto no entra dentro del alcance de esta entrada). Una sesión está destinada a ser efímera y no persistirá por mucho tiempo.

Por otro lado, algunos métodos intentan realizar el seguimiento del usuario durante un largo tiempo, y, en particular, intentan hacer que sea difícil evadir el seguimiento. Esto se hace a veces para fines publicitarios, pero también se puede hacer para detener ciertos ataques como ataques de fuerza bruta o para identificar atacantes que vuelven a un sitio. En el peor de los casos, desde una perspectiva privada, el seguimiento se realiza para seguir un individuo a través de distintos sitios web.

Con los años, los navegadores y plugins han proporcionado un número de maneras de limitar este seguimiento. Estas son algunas de las técnicas más comunes de cómo se hace el seguimiento y la forma en que el usuario puede evitar (algunos):

1 - Cookies

Las cookies tienen el propósito de mantener el estado entre diferentes peticiones. Un navegador enviará una cookie con cada solicitud, una vez que se establece para un sitio en particular. Desde el punto de vista de la privacidad, la fecha de caducidad y el dominio de la cookie son los ajustes más importantes. La mayoría de los navegadores rechazan las cookies de cuentas de un sitio diferente, a menos que el usuario permita que estas cookies se establezcan. Una cookie de sesión correcta no debe usar fecha de caducidad, ya que debe expirar tan pronto como se cierra el navegador. La mayoría de navegadores permiten revisar, controlar y eliminar las cookies. En el pasado, se propuso una cabecera "Cookie2" para las cookies de sesión, pero esta cabecera se desaprobó y el navegador dejó de soportarlo.

https://www.ietf.org/rfc/rfc2965.txt
http://tools.ietf.org/html/rfc6265

Recupera todas tus contraseñas en local con LaZagne

El proyecto LaZagne de Alessandro Zanni tiene como objetivo desarrollar una herramienta de código abierto capaz de recuperar un montón de contraseñas almacenadas en el equipo de forma local. Cada software almacena sus contraseñas utilizando diferentes técnicas (texto plano, utilizando apis, algoritmos personalizados, etc.). Esta herramienta ha sido desarrollada para encontrar las contraseñas de los programas más comunes y, por el momento, es compatible con 22 aplicaciones de Windows y 12 de Linux:


Su uso es muy sencillo, simplemente ejecutamos laZagne.exe con el parámetro correspondiente: {all, browsers, chats, mails, adminsys, database, svn, wifi, windows}:
 

Para más información visita la página del proyecto: https://github.com/AlessandroZ/LaZagne.

Cómo dumpear las claves SSH desde el firmware de un router

Algunos me preguntáis como sacar las claves ssh de los routers en referencia a la entrada de anoche. Os veo venir... pero bueno, veremos rápidamente como hacerlo extrayendo la imagen del firmware de un router ;)

En esta ocasión sin embargo vamos a dejar al *pobre* Comtrend VG-8050 y vamos a ir a por el D-Link Dsl-2750u (la belleza de la derecha). En concreto vamos a echar un vistazo a una de las versiones de firmware que también viene con un demonio Dropbear 0.46 con "premio": la ME_1.11 de octubre de 2013:

http://www.dlinkmea.com/partner/media/product_item_downloadables/1351-DSL2750U-U1_FW1.11.rar

Después de descargar los menos de 7mb que ocupa el rar, lo descomprimimos y analizamos la imagen con Binwalk, el estándar de facto para el análisis de firmwares:

root@kali:~/firmwares# file GAN9.9T113A-B-DL-DSL2750U-R5B0024-Dubai.EN_2T2R_text_for_lan_update.img 
GAN9.9T113A-B-DL-DSL2750U-R5B0024-Dubai.EN_2T2R_text_for_lan_update.img: data

root@kali:~/firmwares# binwalk GAN9.9T113A-B-DL-DSL2750U-R5B0024-Dubai.EN_2T2R_text_for_lan_update.img 

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             LZMA compressed data, properties: 0x5D, dictionary size: 8388608 bytes, uncompressed size: 5402908 bytes
1722624       0x1A4900        Squashfs filesystem, little endian, version 4.0, compression:lzma, size: 5080877 bytes,  1142 inodes, blocksize: 262144 bytes, created: Thu Oct 24 07:46:30 2013

Casi 250.000 routers de Telefónica en España son vulnerables porque tienen las mismas claves SSH

Hoy en el blog de Shodan leía una interesante entrada de John Matherly en el que, mediante el siguiente script, observaba que en Internet existen numerosos fingerprints SSH duplicados:
import shodan

api = shodan.Shodan(YOUR_API_KEY)

# Get the top 1,000 duplicated SSH fingerprints
results = api.count('port:22', facets=[('ssh.fingerprint', 1000)])

for facet in results['facets']['ssh.fingerprint']:
    print '%s --> %s' % (facet['value'], facet['count'])

Realmente esto no es nada nuevo ya que desde hace unos cuantos años se sabe que algunos fabricantes comenten el error de no borrar las claves SSH antes de salvar (y luego distribuir) la imagen de los firmwares de sus dispositivos embebidos, que luego no regeneran las claves en el primer boot. Incluso hay proyectos que recopilan las claves duplicadas: https://code.google.com/p/littleblackbox/.

Pero lo sorprendente es que hay un fingerprint que se repite en un país y con un proveedor en gran número con respecto al resto:

https://www.shodan.io/search?query=fingerprint




Se trata de España y de Telefónica que distribuye casi 250.000 routers para fibras domésticas o FFTH modelo Comtrend VG-8050 con un firmware que contiene un servidor SSH ligero (dropbear 0.46) con las mismas claves ssh:

SSH-2.0-dropbear_0.46
Key type: ssh-rsa
Key: AAAAB3NzaC1yc2EAAAADAQABAAAAgwCKj10BLi11/oSbukFArKJZTXvBvw+AUGfie6fdE7psCNwC
LM5bYnJgjQZMP/VOhJkxkA539e2mM4fW9U4ECAUwgvlF9AZGhcmn0kF0jIjMUDgCV8kFIS85OuBU
/ayyswdYp6bxp3zn0tGAh0Ty8ikf7CgWU5c+PCbpygbBxMDfZM9P
Fingerprint: dc:14:de:8e:d7:c1:15:43:23:82:25:81:d2:59:e8:c0

Esto significa que hay casi 250.000 usuarios en España que son vulnerables. Muchos de ellos corren por defecto ssh con las credenciales también por defecto 1234/1234 (estos directamente están jodidos vendidos) y todos ellos son susceptibles a ataques MiTM en el que cualquiera podría descifrar sus comunicaciones.

 
El firmware vulnerable es (al menos) el SB01-S412TLF-C07_R03 de 2014 y, que yo sepa, la última versión es la C08_R08. Así que si eres usuario de Telefónica pregunten a su soporte Movistar y ¡actualicen!

Ejercicios para aprender ingeniería inversa y exploiting

El francés Wannes Rombouts aka @wapiflapi tiene un proyecto en GitHub con un montón de ejercicios diseñados para solucionarse con NX + ASLR sin depender de que libc se utiliza. La idea es que sólo debe interactuar con stdin/stdout como si fuera un servicio remoto, argv y env no son necesarios para la explotación. Ya tenemos diversión para no dormir en unas cuantas noches:

https://github.com/wapiflapi/exrs

pd. Premio para cualquier amante del reversing que publique en el blog el writeup de uno de los ejercicios ;)

Pescando WPA2 con Linset

Atacar redes wireless se ha convertido desde hace tiempo en un deporte, una diversión o un hobby.

Y cuando digo deporte, diversión o hobby es literal el uso que quiero dar a esta frase: hay "gente despreciable" a los que cuando se les acaban los temas de conversación incluso se juegan las cañas a ver quien es el primero en fundir la "seguridad" de un AP en menos tiempo.

En una de estas competiciones absurdas, fue sorprendente la rapidez (con bastante churro...) con la que unos de estos "borrachos despreciables" se hizo con el premio gordo.

La curiosidad me embargó y, como curioso soy un rato, me abalancé a su portátil..

Es aquí donde conocí la herramienta que os presento hoy:
 

El concepto no es nada nuevo, ya conocíamos que este vector de ataque existía, lo que realmente me sorprendió (aparte de lo bien pensada y realizada la aplicación) es su efectividad,  realmente me resultó extraño, la candidez de muchos usuarios. 

Para el que no conozca el script lo puede bajar y echar un vistazo desde:
 

Busca exploits desde la línea de comandos con Pompem

Pompem es una herramienta de código abierto, diseñada para automatizar la búsqueda de exploits en las principales bases de datos. 

Desarrollado en Python, tiene un sistema de búsqueda avanzada, facilitando así el trabajo de pentesters y hackers éticos. En su versión actual, realiza búsquedas en bases de datos: Exploit-db, 1337day, Packetstorm Security...

También existe una versión web de Pompem (sintaxis PHP): WebPompem

Instalación

Pompem funciona con cualquier versión de Python '2.6.x' y '2.7.x'. Para instalarlo crearemos un entorno de Python aislado en una distribución Kali e instalaremos las dependencias necesarias:

root@kali:~# pip install virtualenv

I evento gratuito de OWASP Madrid

OWASP Madrid Chapter arranca su andadura. Lo hace con una jornada de conferencias abierta que tendrá lugar el próximo 26 de marzo a las 18:30 en el Campus de Leganés de la UC3M.

La entrada es GRATUITA, pero el aforo es limitado por lo que será necesario inscribirse al evento y llevar impresa la entrada. Date prisa porque ya quedan menos de 100 plazas!:

https://www.ticketea.com/i-evento-owasp-madrid/  

Los detalles de la agenda son los siguientes:
Charlas:
  • Presentación OWASP Madrid
  • From vulnerable source to shell in two hours (La charla estará comprendida de dos partes)
    • Introducción a la seguridad en código por Ángel García Moreno @_Ell0_: Se explicarán conceptos de seguridad en código, enseñando fallos comunes, y también se mostrarán ejemplos prácticos. En concreto se utilizará un fallo conocido de Drupal, framework de PHP famoso por su seguridad.
    • Explotación de un fallo de seguridad por Daniel Martínez @dan1t0: En esta charla que continuará donde termine la anterior se explotará el fallo mostrado por Ángel, dumpeando información de la BBDD, troyanizando y controlando el servidor remoto. Se mostrará como poder usar este fallo para atacar a otros usuarios.