Cuantos meses sin publicar nada! pero, aunque no lo crean, el blog sigue vivo!
Para compensar la prolongada ausencia y conmemorar que llegamos a los 200 posts, decidí postear algo groso, algo que venía prometiendo hace rato y que por fiaca de ponerme a editar, no publiqué antes: el listado de aplicaciones de seguridad.
Este listado es el resultado de 4 años de recopilación, trabajando en seguridad, y a ojo contiene más de 150 herramientas! Ahora que dejé la seguridad un poco de lado para concentrarme más en redes y comunicaciones, creo que es un buen momento para publicarlo.
Todas las herramientas están con sus respectivos links oficiales y una breve descripción.
Antes de pasar al listado, les dejo algunas aclaraciones:
- Hay muchas herramientas que nunca utilicé. Armé el listado a partir de leer muchos artículos y descripciones de programas, e incluí todos los que me parecían útiles para distintas tareas.
- Emiliano (quien publicó varios artículos en este blog) colaboró en su momento con varias entradas de la lista. Ahora Emi administra su propio blog denominado linuxito.com.ar
- Agrupé las herramientas en base a distintos criterios. Varias encajan en más de un criterio, pero obviamente no iba a repetirlas en cada uno, así que están en el que me parece las describe mejor.
- El orden en que se encuentran las herramientas no tienen ningún significado, se fueron agregando aleatoriamente. Si bien traté de dejar las más importantes en los primeros lugares, pueden aparecer en cualquier posición.
- Como el listado se empezó a armar hace 4 años, puede que algunos links estén rotos, o que la herramienta no tenga más soporte.
- Hay varias herramientas que no se vinculan directamente a seguridad, pero sirven para realizar tests de seguridad.
- La gran mayoría de las aplicaciones listadas son libres y para
GNU/Linux, pero hay algunas que son cerradas y pagas, y algunas que funcionan sólo en Windows.
- El listado no es completo y existen muchas y muy importantes herramientas que no se encuentran en él.
Live-CDs/DVDs
- BackTrack Linux - Linux-based
penetration testing arsenal that aids security professionals in the
ability to perform assessments in a purely native environment dedicated
to hacking
- Wifislax - distribución GNU/Linux (LiveCD) diseñada para la auditoría de seguridad del estándar 802.11. (WiFi, BlueTooth y RFID).
- DEFT - includes an excellent hardware detection and the best free and open source applications dedicated to Incident Response, Cyber Intelligence and Computer Forensics.
- Pentoo - un Live CD/USB desarrollado para llevar a cabo procesos de Test de Penetración y/o Ethical Hacking. Esta distribución está basada en Gentoo Linux (kernel 2.6.31.6), gestor de ventanas Enlightenment e incluye una amplia colección de herramientas debidamente organizadas por categorías.
- Security Onion - Security Onion is a Linux distro for IDS, NSM, and log management.
- VAST - a VIPER Lab live distribution that contains VIPER developed tools such as UCsniff, videojak, videosnarf and more. Along with VIPER tools and other essential VoIP security tools, it also contains tools penetration testers utilize such as Metasploit, Nmap, and Hydra.
- Network Security Toolkit - The main intent of developing this toolkit was to provide the network security administrator with a comprehensive set of Open Source Network Security Tools.
- Katana - includes distributions which focus on Penetration Testing, Auditing, Password Cracking, Forensics and Honey Pots. Katana comes with over 100 portable Windows applications such as Wireshark, HiJackThis, Unstoppable Copier, and OllyDBG.
- Matriux - fully featured security distribution consisting of a bunch of powerful, open source and free tools that can be used for various purposes including, but not limited to, penetration testing, ethical hacking, system and network administration, cyber forensics investigations, security testing, vulnerability analysis, and much more.
- Samurai - The Samurai Web Testing Framework is a live linux environment that has been pre-configured to function as a web pen-testing environment. The CD contains the best of the open source and free tools that focus on testing and attacking websites.
- REMnux - lightweight Linux distribution for assisting malware analysts in reverse-engineering malicious software.
- PlainSight - versatile computer forensics environment that allows inexperienced forensic practitioners perform common tasks using powerful open source tools.
- WeakNet Linux - designed primarily for penetration testing, forensic analysis and other security tasks.
The tools selected are those that the developer feels are used most often in pen-tests. A sample of those included are: BRuWRT-FORSSE v2.0, Easy-SSHd, Web-Hacking-Portal v2.0, Perlwd, Netgh0st v3.0, YouTube-Thief!, Netgh0st v2.2, DomainScan, ADtrace, Admin-Tool, Tartarus v0.1.
- Puck - GNU/Linux distribution distributed as a Live CD based on TinyCoreLinux. It contains top penetration testing tools.
- Metasploitable - an Ubuntu server install on a VMWare image. A number of vulnerable packages are included, including an install of tomcat 5.5 (with weak credentials), distcc, tikiwiki, twiki, and an older mysql.
Scanners
- Nmap - free and open source utility for network discovery and security auditing. Many systems and network administrators also find it useful for tasks such as network inventory, managing service upgrade schedules, and monitoring host or service uptime.
- Netcat - networking utility which reads and writes data across network connections, using the TCP/IP protocol.
- hping - command-line oriented TCP/IP packet assembler/analyzer. The interface is inspired to the ping(8) unix command, but hping isn't only able to send ICMP echo requests. It supports TCP, UDP, ICMP and RAW-IP protocols, has a traceroute mode, the ability to send files between a covered channel, and many other features.
- haraldscan - Bluetooth discovery scanner.
- Natprobe - This little, but very usefull program, try to sends ICMP packet out the LAN, and detect all the host that allow it. Whit this you can find bugs in your (company?) network (or others), for example hosts that allow p2p connections.
- MSSQLScan - A small multi-threaded tool that scans for Microsoft SQL Servers. The tool does it’s discovery by using UDP and returns a list of all detected instances with there respective protocols and ports.
- hostmap - enumerate all hostnames and configured virtual hosts on an IP address.
- FindDomains - multithreaded search engine discovery tool that will be very useful for penetration testers dealing with discovering domain names/web sites/virtual hosts which are located on too many IP addresses.
- keimpx - It can be used to quickly check for the usefulness of credentials across a network over SMB. Credentials can be: Combination of user / plain-text password, Combination of user / NTLM hash, Combination of user / NTLM logon session token.
- StreamArmor - sophisticated tool for discovering hidden alternate data streams (ADS) as well as clean them completely from the system.
- Halberd - a tool aimed at discovering real servers behind virtual IPs.
- NSDECODER - automated website malware detection tools. It can be used to decode and analyze weather the URL exist malware. Also, NSDECODER will analyze which vulnerability been exploit and the original source address of malware.
- sslyze - Cross-platform tool to analyze the configuration of SSL servers.
Sniffers
- wireshark - world's foremost network protocol analyzer. It lets you see what's happening on your network at a microscopic level. It is the de facto (and often de jure) standard across many industries and educational institutions.
- tcpdump - prints out a description of the contents of packets on a network interface that match the boolean expression.
- arpwatch - thernet monitor program; for keeping track of ethernet/ip address pairings.
- ucsniff - VoIP & IP Video Security Assessment tool that integrates existing open source software into several useful features, allowing VoIP and IP Video owners and security professionals to rapidly test for the threat of unauthorized VoIP and Video Eavesdropping.
- webmitm - transparently proxies and sniffs HTTP / HTTPS traffic redirected by dnsspoof, capturing most "secure" SSL-encrypted webmail logins and form submissions.
- dsniff - collection of tools for network auditing and penetration testing. dsniff, filesnarf, mailsnarf, msgsnarf, urlsnarf, and webspy passively monitor a network for interesting data (passwords, e-mail, files, etc.). arpspoof, dnsspoof, and macof facilitate the interception of network traffic normally unavailable to an attacker (e.g, due to layer-2 switching). sshmitm and webmitm implement active monkey-in-the-middle attacks against redirected SSH and HTTPS sessions by exploiting weak bindings in ad-hoc PKI.
- RawCap - RawCap is a free command line network sniffer for Windows that uses raw sockets.
- Yamas - a tool that aims at facilitating mitm attacks by automating the whole process from setting up ip forwarding and modifying iptables, to the ARP cache poisoning
Spoofing
- arpspoof - may allow an attacker to sniff data frames on a local area network (LAN), modify the traffic, or stop the traffic altogether.
- dnsspoof - forges replies to arbitrary DNS address / pointer queries on the internal LAN. This is useful in bypassing host name based access controls, or in implementing a variety of efficient network controls.
IDS
- snort - open source network intrusion prevention and detection system (IDS/IPS).
- OSSEC - scalable, multi-platform, open source Host-based Intrusion Detection System (HIDS). It has a powerful correlation and analysis engine, integrating log analysis, file integrity checking, Windows registry monitoring, centralized policy enforcement, rootkit detection, real-time alerting and active response.
- Samhain - open source host-based intrusion detection system (HIDS) provides file integrity checking and logfile monitoring/analysis, as well as rootkit detection, port monitoring, detection of rogue SUID executables, and hidden processes.
- Nebula - network intrusion signature generator. It can help securing a network by automatically deriving and installing filter rules from attack traces. In a common setup, nebula runs as a daemon and receives attacks from honeypots. Signatures are currently published in Snort format.
- suricata - The Suricata Engine is an Open Source Next Generation Intrusion Detection and Prevention Engine. This engine is not intended to just replace or emulate the existing tools in the industry, but will bring new ideas and technologies to the field.
- Osiris - Host Integrity Monitoring System that periodically monitors one or more hosts for change. Osiris keeps an administrator apprised of possible attacks and/or nasty little trojans. The purpose here is to isolate changes that indicate a break-in or a compromised system.
- Sagan - multi-threaded, real time system and event log monitoring system, but with a twist. Sagan uses a "Snort" like rule set for detecting bad things happening on your network and/or computer systems. If Sagan detects a "bad thing" happening, that event can be stored to a Snort database (MySQL/PostgreSQL) and Sagan will attempt to correlate the event with your Snort Intrusion Detection/Intrusion Prevention (IDS/IPS) system.
- Snorby - new and modern Snort IDS front-end. The basic fundamental concepts behind snorby are simplicity and power.
- Smooth-sec - ready to-go IDS/IPS (Intrusion Detection/Prevention System) linux distribution based on the multi threaded Suricata IDS/IPS engine and Snorby, the top notch web application for network security monitoring.
- ArpON - portable handler daemon that make ARP secure in order to avoid the Man In The Middle (MITM) through ARP Spoofing/Poisoning attacks. It detects and blocks also derived attacks by it for more complex attacks, as: DHCP Spoofing, DNS Spoofing, WEB Spoofing, Session Hijacking and SSL/TLS Hijacking & co attacks.
Firewalls
- iQfire-wall - framework that implements a network firewall. It can be used in desktop systems and in simple network configurations, providing a friendly graphical interface and a simple installation procedure. Also unprivileged users can personalize.
- Firestarter - Open Source visual firewall program. The software aims to combine ease of use with powerful features, therefore serving both Linux desktop users and system administrators.
- IPCop - Linux firewall distribution.
- Firewall Builder - Firewall Builder is a GUI firewall configuration and management tool that supports iptables (netfilter), ipfilter, pf, ipfw, Cisco PIX (FWSM, ASA) and Cisco routers extended access lists.
- GreenSQL - Open Source database firewall used to protect databases from SQL injection attacks. GreenSQL works as a proxy and has built in support for MySQL. The logic is based on evaluation of SQL commands using a risk scoring matrix as well as blocking known db administrative commands (DROP, CREATE, etc). GreenSQL provides MySQL database security solution.
- Flint - examines firewalls, quickly computes the effect of all the configuration rules, and then spots problems so you can: CLEAN UP RUSTY CONFIGURATIONS that are crudded up with rules that can't match traffic; ERADICATE LATENT SECURITY PROBLEMS lurking in overly-permissive rules; SANITY CHECK CHANGES to see if new rules create problems.
Honeypots
- HoneyDrive - virtual hard disk drive (VMDK format) with Ubuntu Server. It contains various honeypot systems such as Kippo SSH honeypot, Dionaea malware honeypot and Honeyd. Additionally it includes useful scripts and utilities to analyze and visualize the data it captures. Lastly, other helpful tools like tshark (command-line Wireshark), pdftools, etc. are also present.
Auditory
- Nessus - vulnerability scanner. Provides patch, configuration, and compliance auditing; mobile, malware, and botnet discovery; sensitive data identification; and many other features.
- OpenVAS - Open Vulnerability Assessment System and is a network security scanner with associated tools like a graphical user front-end. The core component is a server with a set of network vulnerability tests (NVTs) to detect security problems in remote systems and applications.
- SAINT - Vulnerability Scanning, Penetration Testing, Social Engineering, Configuration Assessments, Reporting.
- PenTBox - Security Suite with programs like Password Crackers, Denial of Service testing tools (DoS and DDoS), Secure Password Generators, Honeypots and much more.
- Seccubus - runs Nessus scans at regular intervals and compares the findings of the last scan with the findings of the previous scan. The delta of this scan is presented in a web GUI when findingscan be easily marked as either real findings or non-issues. Non issues get ignored untill they change. This causes a dramaticreduction a analysis time.
- GrokEVT - collection of scripts built for reading Windows® NT/2K/XP/2K3 event log files. GrokEVT is released under the GNU GPL, and is implemented in Python.
- Flawfinder - program that examines source code and reports possible security weaknesses (``flaws'') sorted by risk level. It's very useful for quickly finding and removing at least some potential security problems before a program is widely released to the public.
- KrbGuess - small and simple tool which can be used during security testing to guess valid usernames against a Kerberos environment.
- Webfwlog - flexible web-based firewall log analyzer and reporting tool. It supports standard system logs for linux, FreeBSD, OpenBSD, NetBSD, Solaris, Irix, OS X, etc. as well as Windows XP. Supported log file formats are netfilter, ipfilter, ipfw, ipchains and Windows XP. Webfwlog also supports logs saved in a database using the ULOGD target of the linux netfilter project.
- YASAT - (Yet Another Stupid Audit Tool) is a simple stupid audit tool. It do many tests for checking security configuration issue or others good practice.
- FireCAT (Firefox Catalog of Auditing exTension) - mindmap collection of the most efficient and useful firefox extensions oriented application security auditing and assessment.
- keimpx - keimpx is an open source tool, released under a modified version of Apache License 1.1. It can be used to quickly check for the usefulness of credentials across a network over SMB.
- Buck Security - collection of security checks for Linux. It was designed for Debian and Ubuntu servers, but can be useful for any Linux system.
- DllHijackAuditor - smart tool to Audit against the Dll Hijacking Vulnerability in any Windows application.
- Mantra - a collection of free and open source tools integrated into a web browser, which can become handy for students, penetration testers, web application developers, security professionals etc.
- MysqlPasswordAuditor - FREE Mysql password recovery and auditing software. Mysql is one of the popular and powerful database software used by most of the web based and server side applications.
PDFs
- origami - Ruby framework designed to parse, analyze, and forge PDF documents. This is NOT a PDF rendering library. It aims at providing a scripting tool to generate and analyze malicious PDF files. As well, it can be used to create on-the-fly customized PDFs, or to inject (evil) code into already existing documents.
- pdfinjector - Script to inject javascript code into existing pdf files.
- PDFResurrect - tool aimed at analyzing PDF documents. The PDF format allows for previous document changes to be retained in a more recent version of the document, thereby creating a running history of changes for the document.
File vulnerabilities checkers
- OfficeCat) - command line utility that can be used to process Microsoft Office Documents for the presence of potential exploit conditions in the file.
Exploitation
- Metasploit - penetration testing software. Helps verify vulnerabilities and manage security assessments.
- Weevely - stealth PHP web shell that provides a telnet-like console. It is an essential tool for web application post exploitation, and can be used as stealth backdoor or as a web shell to manage legit web accounts, even free hosted ones.
- XLSInjector - Injects meterpreter shell to excel xls files (Port 4444).
- Armitage - graphical cyber attack management tool for Metasploit that visualizes your targets, recommends exploits, and exposes the advanced capabilities of the framework.
- Canvas - Immunity's CANVAS makes available hundreds of exploits, an automated exploitation system, and a comprehensive, reliable exploit development framework to penetration testers and security professionals worldwide.
- Core Impact - the most comprehensive software solution for assessing the real-world security of: web applications, network systems, endpoint systems and email users, wireless networks, network devices.
Wireless
- inSSIDer - award-winning free Wi-Fi network scanner for Windows Vista and Windows XP.
- Kismet - an 802.11 layer2 wireless network detector, sniffer, and intrusion detection system. Kismet will work with any wireless card which supports raw monitoring (rfmon) mode, and (with appropriate hardware) can sniff 802.11b, 802.11a, 802.11g, and 802.11n traffic.
- wifite - attack multiple WEP and WPA encrypted networks at the same time. this tool is customizable to be automated with only a few arguments. can be trusted to run without supervision.
Networking
- Yersinia - network tool designed to take advantage of some weakeness in different network protocols. It pretends to be a solid framework for analyzing and testing the deployed networks and systems.
- macof - flood a switched LAN with random MAC addresses
- PacketFence - a fully supported, trusted, Free and Open Source network access control (NAC) system.
- Eigrp-tools - custom EIGRP packet generator and sniffer combined. It was developed to test the security and overall operation quality of the EIGRP routing protocol.
- GNS3 - graphical network simulator that allows simulation of complex networks.
Vulnerabilidades Web
- Nikto - Open Source (GPL) web server scanner which performs comprehensive tests against web servers for multiple items, including over 6500 potentially dangerous files/CGIs, checks for outdated versions of over 1250 servers, and version specific problems on over 270 servers.
- Wapiti - It performs "black-box" scans, i.e. it does not study the source code of the application but will scans the webpages of the deployed webapp, looking for scripts and forms where it can inject data.
- Tamperdata - Firefox add-on to view and modify HTTP/HTTPS headers and post parameters.
- Wfuzz - is a tool designed for bruteforcing Web Applications, it can be used for finding resources not linked (directories, servlets, scripts, etc), bruteforce GET and POST parameters for checking different kind of injections (SQL, XSS, LDAP,etc), bruteforce Forms parameters (User/Password), Fuzzing, etc.
- WebSlayer - tool designed for bruteforcing Web Applications, it can be used for finding not linked resources (directories, servlets, scripts, etc), bruteforce GET and POST parameters, bruteforce Forms parameters (User/Password), Fuzzing, etc. The tools has a payload generator and a easy and powerful results analyzer.
- Watir - drives browsers the same way people do. It clicks links, fills in forms, presses buttons. Watir also checks results, such as whether expected text appears on the page.
- Grendel-Scan - open-source web application security testing tool. It has automated testing module for detecting common web application vulnerabilities, and features geared at aiding manual penetration tests.
- uwss - web security scanner and used for testing security holes in web applications. It can act as a fuzzer whose objective is to probe the application with various crafted attack strings. uwss is built upon a modular concept.
- Doit - scripting tool and language for testing web applications that use forms. Doit can generate random or sequenced form fill-in information, report results (into a database, file, or stdout), filter HTML results, and compare results to previous results.
- BeEF - browser exploitation framework. A professional tool to demonstrate the real-time impact of browser vulnerabilities.
- httprint - Web server fingerprinting tool.
- Netcraft - Escanea servidores web, se utiliza para determinar qué sitios web aloja un servidor.
- curl - curl is a command line tool for transferring files with URL syntax, supporting FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS and FILE. curl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, cookies, user+password authentication (Basic, Digest, NTLM, Negotiate, kerberos...), file transfer resume, proxy tunneling and a busload of other useful tricks.
- Burp Intruder - Burp Intruder is a tool for automating customised attacks against web applications. You can use Burp Intruder to perform many kinds of tasks, including enumerating identifiers, harvesting useful data, and fuzzing for vulnerabilities. It can be used to test for flaws such as SQL injection, cross-site scripting, buffer overflows and path traversal; perform brute force attacks against authentication schemes; manipulate request parameters; trawl for hidden content and functionality; exploit session token predictability; mine for interesting data; and perform concurrency attacks and application-layer denial-of-service attacks.
- Add N Edit Cookies - Firefox extension to edit cookies.
- CookieDigger - CookieDigger helps identify weak cookie generation and insecure implementations of session management by web applications.
- XSS-Proxy - XSS-Proxy is an advanced Cross-Site-Scripting (XSS) attack tool.
- ratproxy - Passive web application security audit tool.
- Hackvertor - Herramienta Web para convertir strings de texto a diferentes codificaciones, útil para inyectar código en las URLs.
- Backframe - Backframe is a full-featured attack console for exploiting WEB browsers, WEB users and WEB applications.
- WebSecurity Websecurify is a web and web2.0 security initiative specializing in researching security issues and building the next generation of tools to defeat and protect web technologies (viene para Win/Linux/Mac!).
- XSS Tunnelling - the tunnelling of HTTP traffic through an XSS Channel to use virtually any application that supports HTTP proxies.
- CeWL - ruby app which spiders a given url to a specified depth, optionally following external links, and returns a list of words which can then be used for password crackers such as John the Ripper.
- fimap - little python tool which can find, prepare, audit, exploit and even google automatically for local and remote file inclusion bugs in webapps.
- w3af - Web Application Attack and Audit Framework. The project's goal is to create a framework to find and exploit web application vulnerabilities that is easy to use and extend.
- WAFP - WAFP fetches the files given by the Finger Prints from a webserver and checks if the checksums of those files are matching to the given checksums from the Finger Prints. This way it is able to detect the detailed version and even the build number of a Web Application.
- Sahi - automation and testing tool for web applications, with the facility to record and playback scripts. Sahi runs on any modern browser which supports javascript.
- skipfish - A fully automated, active web application security reconnaissance tool.
- DAVTest - tests WebDAV enabled servers by uploading test executable files, and then (optionally) uploading files which allow for command execution or other actions directly on the target.
- iScanner - free open source tool lets you detect and remove malicious codes and web pages viruses from your Linux/Unix server easily and automatically.
- COMRaider - a tool designed to fuzz COM Object Interfaces (ActiveX).
- Arachni - feature-full and modular Ruby framework that allows penetration testers and administrators to evaluate the security of web applications. Arachni is smart, it trains itself with every HTTP response it receives during the audit process.
- sessionthief - performs HTTP session cloning by cookie stealing. It integrates automatically with Firefox, dynamically creating a temporary profile for each attack performed. The program will start a new instance of firefox for each session hacked, and let you control the login of all of them at once.
- XSSer - automatic tool for pentesting XSS attacks against different applications.
- sqlinject-finder - Simple python script that parses through a pcap and looks at the GET and POST request data for suspicious and possible SQL injects.
- DOMinator - Firefox based software for analysis and identification of DOM Based Cross Site Scripting issues (DOM XSS).
Fingerprinting and Web Frameworks Scanners
- Joomscan - Yet Another Joomla Vulnerability Scanner that can detects file inclusion, sql injection, command execution vulnerabilities of a target Joomla! web site.
- WPScan - black box WordPress Security Scanner written in Ruby which attempts to find known security weaknesses within WordPress installations.
- BlindElephant - The BlindElephant Web Application Fingerprinter attempts to discover the version of a (known) web application by comparing static files at known locations against precomputed hashes for versions of those files in all all available releases. The technique is fast, low-bandwidth, non-invasive, generic, and highly automatable.
- WPAF - Web Application Finger Printer written in ruby using a SQLite3 DB.
Web Shells
- JBoss Autopwn - This JBoss script deploys a JSP shell on the target JBoss AS server.
Proxies
- WebScarab - WebScarab is a framework for analysing applications that communicate using the HTTP and HTTPS protocols. It is written in Java, and is thus portable to many platforms. WebScarab has several modes of operation, implemented by a number of plugins. In its most common usage, WebScarab operates as an intercepting proxy, allowing the operator to review and modify requests created by the browser before they are sent to the server, and to review and modify responses returned from the server before they are received by the browser. WebScarab is able to intercept both HTTP and HTTPS communication. The operator can also review the conversations (requests and responses) that have passed through WebScarab.
- Burp proxy - Burp Proxy is an interactive HTTP/S proxy server for attacking and testing web applications. It operates as a man-in-the-middle between the end browser and the target web server, and allows the user to intercept, inspect and modify the raw traffic passing in both directions. Burp Proxy allows you to find and exploit application vulnerabilities by monitoring and manipulating critical parameters and other data transmitted by the application. By modifying browser requests in various malicious ways, Burp Proxy can be used to perform attacks such as SQL injection, cookie subversion, privilege escalation, session hijacking, directory traversal and buffer overflows.
- Paros Proxy - Through Paros's proxy nature, all HTTP and HTTPS data between server and client, including cookies and form fields, can be intercepted and modified.
- Odysseus - proxy server, which acts as a man-in-the-middle during an HTTP session. A typical HTTP proxy will relay packets to and from a client browser and a web server. Odysseus will intercept an HTTP session's data in either direction and give the user the ability to alter the data before transmission.
- SPIKE Proxy - professional-grade tool for looking for application-level vulnerabilities in web applications. SPIKE Proxy covers the basics, such as SQL Injection and cross-site-scripting, but it's completely open Python infrastructure allows advanced users to customize it for web applications that other tools fall apart on.
- CAT (Context App Tool) - an application to facilitate manual web application penetration testing. CAT provides a richer feature set and greater performance, combined with a more intuitive user interface to aid a professional manual penetration tester.
- WATOBO - intended to enable security professionals to perform highly efficient (semi-automated ) web application security audits. WATOBO works like a local proxy, similar to Webscarab, Paros or BurpSuite.
- Mallory - transparent TCP and UDP proxy. It can be used to get at those hard to intercept network streams, assess those tricky mobile web applications, or maybe just pull a prank on your friend.
- ProxyStrike - an active Web Application Proxy, is a tool designed to find vulnerabilities while browsing an application.
- Zed Attack Proxy (ZAP) - an easy to use integrated penetration testing tool for finding vulnerabilities in web applications. It is designed to be used by people with a wide range of security experience and as such is ideal for developers and functional testers who are new to penetration testing. ZAP provides automated scanners as well as a set of tools that allow you to find security vulnerabilities manually.
- Vega - open source platform to test the security of web applications. Vega can help you find and validate SQL Injections, Cross-Site Scripting (XSS), inadvertently disclosed sensitive information, and other vulnerabilities.
Pentesting
- MagicTree - MagicTree is a penetration tester productivity tool, it allows easy and straightforward data consolidation, querying, external command execution, and report generation.
- dradis - open source framework to enable effective information sharing.
- Inguma - penetration testing toolkit entirely written in python. The framework includes modules to discover hosts, gather information about, fuzz targets, brute force user names and passwords and, of course, exploits.
Flash
- SWFIntruder - SWFIntruder (pronounced Swiff Intruder) is the first tool specifically developed for analyzing and testing security of Flash applications at runtime.
- Flare - Flare is a free ActionScript decompiler. It decompiles SWFs produced by Macromedia Flash, including Flash MX 2004 and Flash 8.
- MTASC - MTASC is the first ActionScript 2 Open Source free compiler.
- Flasm - Flasm is a free command line assembler/disassembler of Flash ActionScript bytecode. It lets you make changes to any SWF. Flasm fully supports SWFs produced by Macromedia Flash 8 and earlier Flash versions.
- swfmill - swfmill is an xml2swf and swf2xml processor with import functionalities.
- swftools - Collection of utilities for SWF file manipulation/creation.
- SwfScan - HP SWFScan, a free tool developed by HP Web Security Research Group, will automatically find security vulnerabilities in applications built on the Flash platform.
Tracers
- Traceroute - computer network diagnostic tool for displaying the route (path) and measuring transit delays of packets across an Internet Protocol (IP) network.
- MTR - combines the functionality of the traceroute and ping programs in a single network diagnostic tool.
Cryptography
- KGpg - simple interface for GnuPG, a powerful encryption utility..
- FireGPG - Firefox extension under MPL that provides an integrated interface to apply GnuPG operations to the text of any web page, including encryption, decryption, signing, and signature verification..
- SSLDigger - SSLDigger v1.02 is a tool to assess the strength of SSL servers by testing the ciphers supported. Some of these ciphers are known to be insecure.
- THCSSLCheck - Windows tool that checks the remote ssl stack for supported ciphers and version.
- sslscan - queries SSL services, such as HTTPS, in order to determine the ciphers that are supported.
- SSLStrip - This tool provides a demonstration of the HTTPS stripping attacks that I presented at Black Hat DC 2009.
- TLSSLed - Linux shell script whose purpose is to evaluate the security of a target SSL/TLS (HTTPS) web server implementation.
Crackers
- John the Ripper - fast password cracker, currently available for many flavors of Unix, Windows, DOS, BeOS, and OpenVMS. Its primary purpose is to detect weak Unix passwords.
- Ophcrack - Windows password cracker based on rainbow tables.
- Hydra - very fast network logon cracker which support many different services.
- patator - multi-purpose brute-forcer, with a modular design and a flexible usage.
- Aircrack-ng - an 802.11 WEP and WPA-PSK
keys cracking program that can recover keys once enough data packets
have been captured.
- IKECrack - open source IKE/IPSec authentication crack tool. This tool is designed to bruteforce or dictionary attack the key/password used with Pre-Shared-Key [PSK] IKE authentication.
- Wophcrack - PHP based web frontend for Ophcrack
- Bruter - parallel network login brute-forcer on Win32. This tool is intended to demonstrate the importance of choosing strong passwords. The goal of Bruter is to support a variety of services that allow remote authentication.
- IGHASHGPU - Program to recover/crack SHA1, MD5 & MD4 hashes.
- Medusa - intended to be a speedy, massively parallel, modular, login brute-forcer. The goal is to support as many services which allow remote authentication as possible.
- Ncrack - high-speed network authentication cracking tool. It was built to help companies secure their networks by proactively testing all their hosts and networking devices for poor passwords.
- authforce - Authforce is an HTTP authentication brute forcer. Using various methods, it attempts brute force username and password pairs for a site.
- RSMangler - take a wordlist and perform various manipulations on it similar to those done by John the Ripper with a few extras.
- CmosPwd - decrypts password stored in cmos used to access BIOS SETUP.
Phishing
- Imposter - flexible framework to perform Browser Phishing attacks. Once the system running Imposter is configured as the DNS server to the victims, the internal DNS server of Imposter resolves all DNS queries to itself. When the victim tries to access any website the domain resolves to the system running Imposter and Imposter’s internal web server serves content to the victim.
- Social-Engineering Toolkit (SET) - python-driven suite of custom tools which solely focuses on attacking the human element of pentesting. It's main purpose is to augment and simulate social-engineering attacks and allow the tester to effectively test how a targeted attack may succeed.
Security Defense
- AppArmor - effective and easy-to-use Linux application security system. AppArmor proactively protects the operating system and applications from external or internal threats, even zero-day attacks, by enforcing good behavior and preventing even unknown application flaws from being exploited.
- Untangle Gateway - Debian-based network gateway with pluggable modules for network applications like spam blocking, web filtering, anti-virus, anti-spyware, intrusion prevention, VPN, SSL VPN, firewall, and more.
Network Administration
- Nagios - monitors your entire IT infrastructure to ensure systems, applications, services, and business processes are functioning properly. In the event of a failure, Nagios can alert technical staff of the problem, allowing them to begin remediation processes before outages affect business processes, end-users, or customers.
- ntop - network traffic probe that shows the network usage, similar to what the popular top Unix command does.
- nmblookup - NetBIOS over TCP/IP client used to lookup NetBIOS names.
- findsmb - list info about machines that respond to SMB name queries on a subnet.
- Corkscrew - tool for tunneling SSH through HTTP proxies
- snmpcheck - free open source utility to get information via SNMP protocols.
- snmpwalk - retrieve a subtree of management values using SNMP GETNEXT requests.
- IPTraf - console-based network statistics utility for Linux. It gathers a variety of figures such as TCP connection packet and byte counts, interface statistics and activity indicators, TCP/UDP traffic breakdowns, and LAN station packet and byte counts.
Databases
- Safe3 SQL Injector - one of the most powerful penetration testing tool that automates the process of detecting and exploiting SQL injection flaws and taking over of back-end database servers.
- sqlcmd - herramienta para conexión a bases de datos Oracle, SQL Server, MySQL y Postgress
- sqlmap - open source penetration testing tool that automates the process of detecting and exploiting SQL injection flaws and taking over of back-end database servers.
- SQLiX - SQL Injection scanner, able to crawl, detect SQL injection vectors, identify the back-end database and grab function call/UDF results (even execute system commands for MS-SQL).
- sqlninja - tool targeted to exploit SQL Injection vulnerabilities on a web application that uses Microsoft SQL Server as its back-end.
- MySqloit - SQL Injection takeover tool focused on LAMP (Linux, Apache,MySql,PHP) and WAMP (Windows, Apache,MySql,PHP) platforms. It has the ability to upload and execute metasploit shellcodes through the MySql SQL Injection vulnerabilities.
- TNS Listener tool - tnscmd can be used to speak, on a very simple level, with Oracle's TNS listener.
- SQLInjector - SQLInjector uses inference techniques to extract data and determine the backend database server.
- GreenSQL - designed to protect databases (PostgreSQL/MySQL) against SQL injection attacks and other unauthorised changes, in a similar fashion to a firewall protecting a network against TCP/IP outside attacks. The new version also provides a graphical user interface for monitoring the database firewall.
- FreeTDS - Microsoft SQL Server client.
- MSSQLScan - A small multi-threaded tool that scans for Microsoft SQL Servers.
- AppSentry Listener Security Check - Check the security configuration of the Oracle Database Listener and listeners for Oracle Applications 11i.
Code analyzers
- MS MiniFuzz - very simple fuzzer designed to ease adoption of fuzz testing by non-security people who are unfamiliar with file fuzzing tools or have never used them in their current software development processes.
- MS BinScope - Microsoft verification tool that analyzes binaries on a project-wide level to ensure that they have been built in compliance with Microsoft’s Security Development Lifecycle (SDL) requirements and recommendations.
- MS FxCop - code analysis tool that checks .NET managed code assemblies for conformance to the Microsoft .NET Framework Design Guidelines.
- RATS - tool for scanning C, C++, Perl, PHP and Python source code and flagging common security related programming errors such as buffer overflows and TOCTOU (Time Of Check, Time Of Use) race conditions.
- Graudit - simple script and signature sets that allows you to find potential security flaws in source code using the GNU utility grep. Graudit supports scanning code written in several languages; asp, jsp, perl, php and python.
DNS
- dnsmap - Subdomain bruteforce.
Forensics Analysis
- Digital Forensics Analysis - a simple but powerful open source tool with a flexible module system which will help you in your digital forensics works, including files recovery due to error or crash, evidence research and analysis, etc.
- EnCase Forensic Tool - From the simplest requirements to the most complex, EnCase Forensic is the premier computer forensic application on the market.
Bypass
- Pass-The-Hash - The Pass-The-Hash Toolkit contains utilities to manipulate the Windows Logon Sessions mantained by the LSA (Local Security Authority) component. These tools allow you to list the current logon sessions with its corresponding NTLM credentials (e.g.: users remotely logged in thru Remote Desktop/Terminal Services), and also change in runtime the current username, domain name, and NTLM hashes
Documentation
- Agnitio - A tool to help developers and security professionals conduct manual security code reviews in a consistent and repeatable way. Agnitio aims to replace the adhoc nature of manual security code review documentation, create an audit trail and reporting.
Educational
- Damn Vulnerable Web App (DVWA) - PHP/MySQL web application that is damn vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, help web developers better understand the processes of securing web applications and aid teachers/students to teach/learn web application security in a class room environment.
- Mutillidae - Deliberately Vulnerable Set Of PHP Scripts That Implement The OWASP Top 10
- WebGoat - deliberately insecure J2EE web application maintained by OWASP designed to teach web application security lessons.
- moth - VMware image with a set of vulnerable Web Applications and scripts, that you may use for Testing Web Application Security Scanners, Testing Static Code Analysis tools (SCA) and Giving an introductory course to Web Application Security.
- Web Security Dojo - A free open-source self-contained training environment for Web Application Security penetration testing. Tools + Targets = Dojo
Programming
- JODE is a java package containing a decompiler and an optimizer for java
File Managers
- cadaver - is a command-line WebDAV client for Unix. It supports file upload, download, on-screen display, namespace operations (move/copy), collection creation and deletion, and locking operations.
NAT
- pwnat - pronounced "poe-nat", is a tool that allows any number of clients behind NATs to communicate with a server behind a separate NAT with *no* port forwarding and *no* DMZ setup on any routers in order to directly communicate with each other.
Mostrando entradas con la etiqueta exploits. Mostrar todas las entradas
Mostrando entradas con la etiqueta exploits. Mostrar todas las entradas
De qué trata DLL Hijacking y por qué afecta a tantas aplicaciones? Realmente es algo muy simple. DLL Hijacking se aprovecha de la forma en que se buscan las librerías dinámicas (DLL) en el filesystem cuando un programa intenta cargarlas utilizando la función LoadLibrary. Lo que hace un atacante es crear una librería dinámica propia, que se llame igual a alguna de las que carga un dado programa cuando intenta abrir un determinado tipo de archivo. Como al momento de abrir el archivo (por ejemplo un pps) el directorio de trabajo es el del archivo, si el atacante planta su librería ahí, el programa cargará esa en lugar de la original... gualá!!!
Este ataque tiene sentido cuando tenemos archivos compartidos. Supongamos que tenemos un servidor de archivos basado en CIFS (o SMB, los clásicos shares de Windows) donde distintas personas pueden leer y escribir. Ahora supongamos que Malicioso crea un pps en el servidor y le dice a Josesito "mira la presentación que puse en tal directorio". A su vez, Malicioso crea una librería dinámica que sabe que Power Point intentará cargar al abrir el pps. Si Josesito no es desconfiado y es lo suficientemente curioso, abrirá la presentación directamente desde el servidor de archivos (por experiencia, todos hacen eso, nadie copia las cosas a su disco). Al hacer esto, el Power Point de Josesito cargará la librería creada por Malicioso en lugar de la original, permitiendo a Malicioso ejecutar lo que quiera con los permisos de Josesito!
Para jugar un rato, descarguen alguno de los exploits que figuran en la sección Local Exploit de Exploit Database. Muchos traen la explicación de cómo compilar las librerías, pero les comento que pueden hacerlo con el gcc para Windows de la siguiente forma:
gcc -shared -o <nombre-libreria-hijack>.dll <codigo>.cEntonces, es un problema de Windows? nop, esta vez Windows se salva. El problema es de las aplicaciones que no especifican correctamente el path a sus librerías. Como pueden ver en el manual de la función Load Library, ésta toma como parámetro el nombre de una librería y la carga en memoria. Si no se especifica path a la misma, la función realiza una búsqueda estándar, es decir, se busca la librería en directorios predeterminados. El orden de búsqueda depende de si "Safe DLL search mode" está activo o no. La clave de registro que activa/desactiva el modo safe se encuentra en HKLM\System\CurrentControlSet\Control\Session Manager\SafeDllSearchMode (en XP y 2000 SP 4 viene deshabilitado por default).
Si SafeDllSearchMode está habilitado, el orden de búsqueda es el siguiente:
1. El directorio desde donde se carga la aplicación.Si SafeDllSearchMode está deshabilitado, el orden es el siguiente:
2. El directorio de sistema.
3. El directorio de sistema de 16-bit.
4. El directorio de Windows
6. Los directorios que están listados en la variable de entorno PATH.
1. El directorio desde donde se carga la aplicación.Este orden de búsqueda estándar se puede alterar utilizando la función LoadLibraryEx o bien con SetDllDirectory, con las cuales especificamos dónde buscar primero.
2. El directorio actual.
3. El directorio de sistema.
4. El directorio de sistema de 16-bit.
5. El directorio de Windows
6. Los directorios que están listados en la variable de entorno PATH.
Como se darán cuenta, esta vulnerabilidad afecta a toda aplicación que no explicite el path a sus librerías, y por ello es que debe haber cientos o miles de aplicaciones perjudicadas.
Ahora, si es algo tan simple, cómo es que nadie lo descubrió antes? Bueno, si lo hicieron, en F-Secure dicen que se publicó sobre esta vulnerabilidad hace como 10 años, pero ahora surgió el revuelo porque HD Moore publicó un kit que permite encontrar rápidamente aplicaciones vulnerables. Pueden leer y descargar el kit en Exploiting DLL Hijacking Flaws y Better, Faster, Stronger: DLLHijaAuditKit v2.
Si bien mencioné que el exploit tiene sentido desde shares de Windows, otras formas de utilizarlo es desde archivos comprimidos, pen-drives, y WebDav (extensión de MS para HTTP en IIS).
MS publicó hace unos días un advisory para administradores donde explican algunas medidas a tomar para minimizar los riesgos. Entre las soluciones provisionales proponen:
- Deshabilitar la carga de librerías desde WebDAV y shares remotos.Por supuesto que deberán estar atentos a los parches que publiquen los distintos proveedores para solucionar este problema.
- Deshabilitar el servicio WebClient.
- Bloquear los puertos 139 y 445 usando firewall. Claro que esto los dejará sin los shares...
También publicaron una guía para programadores sobre lo que pueden hacer para proteger sus aplicaciones contra el DLL Hijacking. Básicamente las recomendaciones son:
- Especificar el path completo a la librería siempre que sea posible.
- Usar DLL Redirection o un manifest para asegurarse de que están utilizando la DLL correcta.
- Asegurarse de que "safe DLL search mode" esté habilitado.
- Eliminar el directorio actual del path de búsqueda llamando la función SetDllDirectory con un string vacío ("").
- No usar la función SearchPath para obtener el path de una librería a menos que "safe process search mode" esté habilitado.
- No asumir versión de sistema operativo basados en lo retornado por LoadLibrary.
Espero haberlos iluminado un poco sobre el tema y sobre todo espero que los programadores tomen conciencia de este tipo de ataque a la hora de programar.
Etiquetas:
articulos,
DLL Hijacking,
exploits,
hacking,
programacion,
seguridad,
vulnerabilidades,
windows
Recientemente estuve tratando de escalar privilegios en una máquina local con Windows XP y, como es de esperarse, encontré una variedad de exploits en Internet. Voy a explicarles los más sencillos y efectivos dividiendo la tarea en dos partes: escalar privilegios desde una cuenta de usuario restringida hasta Administrator; y escalar privilegios desde Administrator hasta SYSTEM, lo que nos dará el control total del sistema.
Veamos cómo funciona la primer técnica: Por defecto, Windows XP instala el software de ayuda y accesibilidad que se activa pulsando la tecla SHIFT 5 veces seguidas. Al hacer esto, aparece un cuadro de diálogo que permite configurar la aplicación sethc.exe ubicada en C:\WINDOWS\SYSTEM32.

El ataque consiste en sustituir sethc.exe por cmd.exe (esto se puede hacer con un disco de arranque ntfsdos o con un live cd de alguna distribución de Linux si no se puede escribir en el directorio C:\WINDOWS\SYSTEM), de esta forma cuando pulsemos la tecla SHIFT 5 veces seguidas se ejecutará un intérprete de comandos. Hasta este punto no es algo muy grave, pero la vulnerabilidad aparece cuando pulsamos SHIFT 5 veces antes de iniciar sesión ya que el interprete de comandos que se ejecuta lo hace bajo privilegios Administrator.

A continuación, cualquier comando que ejecutemos será como usuario Administrator. Lo ideal es crear una nueva cuenta Administaror, lo cual se hace de dos formas:
De esta forma creamos el usuario "nuevoadmin" con privilegios de administrador y contraseña "1234password"
Ejecutando "Computer Management"
Esta aplicación permite agregar usuarios mediante una interfaz gráfica.
Ahora veamos la segunda técnica: Esta técnica consiste en explotar una vulnerabilidad en el procedimiento de ejecución de aplicaciones de Windows. Cuando lanzamos una aplicación, si la ruta al ejecutable no contiene espacios, como por ejemplo:
Pero qué sucede si olvidamos las comillas y ejecutamos:
Puede parecer igual a lo anterior pero en realidad sucede lo siguiente:
Esto nos abre una puerta para lograr el acceso al sistema con mayores privilegios. Por qué? La mayoría de los servicios en Windows se ejecutan como SYSTEM y algunos se encuentran bajo el directorio "C:\Program Files". Entonces veamos la siguiente situación: supongamos que Mcshield.exe es un servicio que se inicia automáticamente con Windows y se ejecuta en el contexto de LocalSystem. La ruta al ejecutable es la mencionada anteriormente, pero sin comillas. Cuando Windows inicia, trata de ejecutar el servicio Mcshield automáticamente como LocalSystem, pero debido a que no hay comillas en la ruta al archivo Mcshield.exe tratará de iniciar (siempre como LocalSystem) primero lo siguiente:
Por lo tanto es posible crear nuestro propio "servicio" Program.exe o VirusScan.exe y situarlo en la ubicación donde Windows accidentalmente tratará de ejecutarlo. El servicio puede ser algo básico como agregar un nuevo usuario administrador, como expliqué anteriormente.
Tal vez se pregunten: ¿puede ser que algún servicio tenga la ruta al ejecutable sin comillas? La respuesta es sí, yo lo probé y quedé sorprendido por la cantidad de veces que se ejecutó el "servicio" Program.exe al iniciar Windows. Solamente hay que encontrar uno que se ejecute con privilegios >= Administrator, o plantar el archivo Program.exe y esperar que un administrador inicie sesión en el equipo. En Windows XP es posible listar los servicios que se ejecutan automáticamente al iniciar el sistema desde Start > Settings > Control Panel > Administrative Tools > Services.
Una posible limitación es encontrarse sin permiso de escritura en el directorio "C:\" o "C:\Program Files\McAfee\" pero siempre podemos plantar el "servicio" utilizando un disco de arranque ntfsdos o un live cd. La última barrera sería no poder bootear el sistema desde unidades de disco o usb, en este caso podemos intentar resetear la BIOS quitando la pila.
Si tenemos acceso físico, el sistema está comprometido.
Supongamos que una política de Windows nos impide modificar la configuración del proxy en Internet Explorer, a pesar de tener privilegios de administrador local. En la siguiente captura se observa la ventana de configuración de red de Internet Explorer (se accede desde “Tools > Internet Options… > Connections > LAN Settings…”).

Para comenzar, abrimos cms.exe y ejecutamos el comando ‘at’. Se observa que el comando está habilitado (de lo contrario retorna “Access is denied.”) lo que nos permite agregar una nueva tarea programada, como se observa en la siguiente captura:

Cuando el reloj alcanza las 8:27 se ejecuta la tarea “cmd.exe”, la diferencia es que esta tarea se ejecuta con privilegios SYSTEM ya que es iniciada por el servicio “Task Scheduler” que corre bajo la cuenta Local System. En la siguiente captura se observa el intérprete de comandos iniciado automáticamente, la barra de título indica ‘svchost.exe’ (Service Host) en lugar de ‘cmd.exe’. A partir de esta consola podemos ejecutar cualquier aplicación con privilegios SYSTEM:

Si abrimos Internet Explorer desde esta consola tenemos acceso a todas las opciones bloqueadas anteriormente. Esto nos permite, por ejemplo, modificar la configuración del servidor Proxy (estas opciones estaban grisadas en la primer captura):

Si deseamos un entorno de escritorio ejecutado bajo privilegios SYSTEM, primero debemos terminar el proceso “explorer.exe” para cerrar el entorno de escritorio actual:

Una vez que terminamos el proceso “explorer.exe” desaparece el escritorio y todas las ventanas abiertas, excepto la consola con privilegios SYSTEM. A continuación ejecutamos “explorer.exe” desde esta consola, lo que inicia un nuevo entorno de escritorio. Aunque el nombre de usuario corresponde con el nombre del sistema, lo que indica que el entorno de escritorio está ejecutando bajo privilegios SYSTEM. A partir que aquí, todas las aplicaciones que ejecutemos desde el escritorio se ejecutaran bajo privilegios SYSTEM. Es posible resetear la contraseña del administrador local, matar procesos pertenecientes a SYSTEM y acceder a todos los componentes bloqueados del sistema.
Para evitar este ataque, se debe deshabilitar el servicio “Task Scheduler” siempre que no sea necesario. Pero si es necesario, se debe deshabilitar el comando ‘at’ y utilizar el comando ‘schtasks’ (la documentación de este comando se encuentra en http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/schtasks.mspx).
NOTA: La información presentada en este artículo fue para fines didácticos y no debía utilizarse para abusar de sistemas Windows ;)
Primera parte: "from pepe to Administrator"
Primero veamos como lograr privilegios de Administrator partiendo de una cuenta de usuario con privilegios restringidos. Para lograr esta escalada hay dos técnicas básicas, la primera consiste en sobreescribir el ejecutable C:\WINDOWS\SYSTEM32\sethc.exe (lo que requiere permisos de escritura en el directorio C:\WINDOWS\SYSTEM32) y la segunda consiste en explotar una vulnerabilidad en el procedimiento de ejecución de aplicaciones de Windows (la cual requiere permisos de escritura en el directorio C:\).Veamos cómo funciona la primer técnica: Por defecto, Windows XP instala el software de ayuda y accesibilidad que se activa pulsando la tecla SHIFT 5 veces seguidas. Al hacer esto, aparece un cuadro de diálogo que permite configurar la aplicación sethc.exe ubicada en C:\WINDOWS\SYSTEM32.
El ataque consiste en sustituir sethc.exe por cmd.exe (esto se puede hacer con un disco de arranque ntfsdos o con un live cd de alguna distribución de Linux si no se puede escribir en el directorio C:\WINDOWS\SYSTEM), de esta forma cuando pulsemos la tecla SHIFT 5 veces seguidas se ejecutará un intérprete de comandos. Hasta este punto no es algo muy grave, pero la vulnerabilidad aparece cuando pulsamos SHIFT 5 veces antes de iniciar sesión ya que el interprete de comandos que se ejecuta lo hace bajo privilegios Administrator.
A continuación, cualquier comando que ejecutemos será como usuario Administrator. Lo ideal es crear una nueva cuenta Administaror, lo cual se hace de dos formas:
- Ejecutando los comandos:
net user nuevoadmin 1234password /add
net localgroup administrators nuevoadmin /add
De esta forma creamos el usuario "nuevoadmin" con privilegios de administrador y contraseña "1234password"
compmgmt.msc
Esta aplicación permite agregar usuarios mediante una interfaz gráfica.
Ahora veamos la segunda técnica: Esta técnica consiste en explotar una vulnerabilidad en el procedimiento de ejecución de aplicaciones de Windows. Cuando lanzamos una aplicación, si la ruta al ejecutable no contiene espacios, como por ejemplo:
C:\WINDOWS\system32\cmd.exeWindows localiza el archivo cmd.exe e inicia su ejecución. Si en cambio la ruta al ejecutable contiene espacios debemos utilizar comillas dobles, como por ejemplo:
"C:\Program Files\McAfee\VirusScan Enterprise\Mcshield.exe"para que Windows localice correctamente el archivo ejecutable. En la (vieja) notación 8.3 es posible evitar el uso de comillas mediante:
C:\Progra~1\McAfee\VirusS~1\Mcshield.exe
Pero qué sucede si olvidamos las comillas y ejecutamos:
C:\Program Files\McAfee\VirusScan Enterprise\Mcshield.exe
Puede parecer igual a lo anterior pero en realidad sucede lo siguiente:
- Windows intenta localizar y ejecutar el archivo C:\Program.exe
- Si ese archivo no existe, Windows intenta localizar y ejecutar el archivo C:\Program Files\McAfee\VirusScan.exe
- Si ese archivo no existe, Windows finalmente intenta localizar y ejecutar el archivo originalmente deseado C:\Program Files\McAfee\VirusScan Enterprise\Mcshield.exe
Esto nos abre una puerta para lograr el acceso al sistema con mayores privilegios. Por qué? La mayoría de los servicios en Windows se ejecutan como SYSTEM y algunos se encuentran bajo el directorio "C:\Program Files". Entonces veamos la siguiente situación: supongamos que Mcshield.exe es un servicio que se inicia automáticamente con Windows y se ejecuta en el contexto de LocalSystem. La ruta al ejecutable es la mencionada anteriormente, pero sin comillas. Cuando Windows inicia, trata de ejecutar el servicio Mcshield automáticamente como LocalSystem, pero debido a que no hay comillas en la ruta al archivo Mcshield.exe tratará de iniciar (siempre como LocalSystem) primero lo siguiente:
- C:\Program.exe
- C:\Program Files\McAfee\VirusScan.exe
Por lo tanto es posible crear nuestro propio "servicio" Program.exe o VirusScan.exe y situarlo en la ubicación donde Windows accidentalmente tratará de ejecutarlo. El servicio puede ser algo básico como agregar un nuevo usuario administrador, como expliqué anteriormente.
Tal vez se pregunten: ¿puede ser que algún servicio tenga la ruta al ejecutable sin comillas? La respuesta es sí, yo lo probé y quedé sorprendido por la cantidad de veces que se ejecutó el "servicio" Program.exe al iniciar Windows. Solamente hay que encontrar uno que se ejecute con privilegios >= Administrator, o plantar el archivo Program.exe y esperar que un administrador inicie sesión en el equipo. En Windows XP es posible listar los servicios que se ejecutan automáticamente al iniciar el sistema desde Start > Settings > Control Panel > Administrative Tools > Services.
Una posible limitación es encontrarse sin permiso de escritura en el directorio "C:\" o "C:\Program Files\McAfee\" pero siempre podemos plantar el "servicio" utilizando un disco de arranque ntfsdos o un live cd. La última barrera sería no poder bootear el sistema desde unidades de disco o usb, en este caso podemos intentar resetear la BIOS quitando la pila.
Si tenemos acceso físico, el sistema está comprometido.
Segunda parte: "from Administrator to SYSTEM"
Bajo circunstancias normales, un usuario no puede ejecutar código como SYSTEM, sólo el sistema operativo tiene esta habilidad, pero utilizando el intérprete de comandos se puede abusar del comando ‘at’ para que Windows ejecute nuestro escritorio con privilegios SYSTEM. El comando ‘at’ despacha comandos y programas para ejecutarse en una fecha y tiempo específico. Este comando se puede utilizar sólo cuando el servicio “Task Scheduler” se está ejecutando y el usuario que lo ejecuta es miembro del grupo “local Administrators”.Supongamos que una política de Windows nos impide modificar la configuración del proxy en Internet Explorer, a pesar de tener privilegios de administrador local. En la siguiente captura se observa la ventana de configuración de red de Internet Explorer (se accede desde “Tools > Internet Options… > Connections > LAN Settings…”).
Para comenzar, abrimos cms.exe y ejecutamos el comando ‘at’. Se observa que el comando está habilitado (de lo contrario retorna “Access is denied.”) lo que nos permite agregar una nueva tarea programada, como se observa en la siguiente captura:
Cuando el reloj alcanza las 8:27 se ejecuta la tarea “cmd.exe”, la diferencia es que esta tarea se ejecuta con privilegios SYSTEM ya que es iniciada por el servicio “Task Scheduler” que corre bajo la cuenta Local System. En la siguiente captura se observa el intérprete de comandos iniciado automáticamente, la barra de título indica ‘svchost.exe’ (Service Host) en lugar de ‘cmd.exe’. A partir de esta consola podemos ejecutar cualquier aplicación con privilegios SYSTEM:
Si abrimos Internet Explorer desde esta consola tenemos acceso a todas las opciones bloqueadas anteriormente. Esto nos permite, por ejemplo, modificar la configuración del servidor Proxy (estas opciones estaban grisadas en la primer captura):
Si deseamos un entorno de escritorio ejecutado bajo privilegios SYSTEM, primero debemos terminar el proceso “explorer.exe” para cerrar el entorno de escritorio actual:
Una vez que terminamos el proceso “explorer.exe” desaparece el escritorio y todas las ventanas abiertas, excepto la consola con privilegios SYSTEM. A continuación ejecutamos “explorer.exe” desde esta consola, lo que inicia un nuevo entorno de escritorio. Aunque el nombre de usuario corresponde con el nombre del sistema, lo que indica que el entorno de escritorio está ejecutando bajo privilegios SYSTEM. A partir que aquí, todas las aplicaciones que ejecutemos desde el escritorio se ejecutaran bajo privilegios SYSTEM. Es posible resetear la contraseña del administrador local, matar procesos pertenecientes a SYSTEM y acceder a todos los componentes bloqueados del sistema.
Para evitar este ataque, se debe deshabilitar el servicio “Task Scheduler” siempre que no sea necesario. Pero si es necesario, se debe deshabilitar el comando ‘at’ y utilizar el comando ‘schtasks’ (la documentación de este comando se encuentra en http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/schtasks.mspx).
Conclusión
Explotando estas vulnerabilidades, logramos acceso con privilegios SYSTEM a partir de una cuenta limitada "pepe". Espero que les haya gustado.NOTA: La información presentada en este artículo fue para fines didácticos y no debía utilizarse para abusar de sistemas Windows ;)
Etiquetas:
exploits,
hacking,
microsoft,
offensive security,
pentesting,
privilege escalation,
windows,
Windows XP
Introducción
El propósito de este artículo es demostrar los riesgos que se corren cuando se utiliza Adobe Reader con Javascript activado. Un documento Adobe Reader malicioso puede permitirle a un atacante tener acceso a las máquinas de los usuarios y sus archivos, ejecutar código arbitrario, provocar denegación de servicio y utilizarlas como pívot para acceder a otros equipos de la intranet.
La firma de seguridad "ScanSafe" anunció que, según su cuenta, los documentos PDF maliciosos conformaron el 80% de los exploits para el final de 2009, como se informa en el sitio COMPUTERWORLD:
http://www.computerworld.com/s/article/9157438/Rogue_PDFs_account_for_80_of_all_exploits_says_researcher
Como ejemplo se utiliza una vulnerabilidad de stack overflow en la versión 8.1.2 de Adobe Reader, lo cual permite la ejecución de código arbitrario de forma remota.
Desarrollo
A continuación se detalla el procedimiento utilizado para tener acceso remoto a la máquina local.
La vulnerabilidad explotada consiste en un stack overflow en la función de Javascript util.printf() de Adobe Reader. Esta vulnerabilidad se detalla en el siguiente boletín del sitio SecurityFocus:
http://www.securityfocus.com/bid/30035/info
Esta vulnerabilidad se explota construyendo un documento PDF que contiene un formulario con una porción de código Javascript. Este código malicioso realiza un overflow de la pila en la llamada a la función util.printf(), lo que permite ligar una instancia del intérprete de comandos de Windows (cmd.exe) a un puerto aleatorio (en este caso el puerto 4444) para que el atacante se conecte de forma remota y ejecute comandos arbitrarios (utilizando telnet, netcat, etc.).
Para construír el documento PDF con Javascript se utiliza "Scribus", una aplicación Open Source para autoedición (http://www.scribus.net). En los sistemas operativos de la familia Debian se instala a través del comando:
sudo apt-get install scribus
En este caso se utilizó un botón para ejecutar el exploit, aunque se puede disparar automáticamente ante cualquier evento, como por ejemplo al abrir, cerrar o realizar cualquier otra acción sobre el documento PDF.
Para agregar un botón, se selecciona "Button" en la barra de herramientas "PDF Tools". Luego de dibujar el botón con el mouse, se hace clic derecho sobre el mismo y se selecciona "PDF Options > Field Properties". En la pestaña "Action" se selecciona "Type: Javascript", "Event: Mouse Down" y luego se inserta el código del exploit en el campo "Script:", el cual se puede descargar desde:
http://www.milw0rm.com/exploits/7006
Luego se presiona "OK" y se selecciona "File > Export > Save as PDF".
El atacante puede enviar este documento a la víctima a través de distintos medios, como puede ser correo electrónico, aplicaciones de Chat, IRC, pendrives, etc. Una vez que la víctima abre el documento (utilizando Adobe Reader con Javascript activado) se ejecuta el exploit y se abre el puerto 4444 para que el atacante se conecte al intérprete de comandos de forma remota.
En la siguiente figura se observa el documento abierto con Adobe Reader:



De esta forma el atacante logra control total de la máquina de la víctima de forma remota, lo único que necesita es enviar el documento por correo electrónico y esperar que la víctima lo abra.
Desde la máquina de la víctima, se observa la conexión establecida con la máquina del atacante, consultando al sistema operativo:
Si la intranet está protegida por un firewall/proxy, se puede modificar el exploit (cambiando el payload) para que sea la máquina víctima quien inicie la conexión con la máquina del atacante (por ejemplo a través de un túnel con el proxy). De esta forma las máquinas en la intranet son vulnerables a cualquier atacante externo.
Por otra parte, a pesar de que el antivirus de McAfee detectó algunos documentos PDF con exploits de diferentes vulnerabilidades, no detectó este exploit en particular.
Parche
Desactivar Javascript en todas las versiones de Adobe Reader y mantener actualizado Adobe Reader o migrar a una aplicación alternativa como Foxit Reader en los sistemas Windows.
Solución
Formatear el disco C:\ e instalar cualquier distribución GNU/Linux. Utilizar "evince" (http://www.gnome.org/projects/evince).
El propósito de este artículo es demostrar los riesgos que se corren cuando se utiliza Adobe Reader con Javascript activado. Un documento Adobe Reader malicioso puede permitirle a un atacante tener acceso a las máquinas de los usuarios y sus archivos, ejecutar código arbitrario, provocar denegación de servicio y utilizarlas como pívot para acceder a otros equipos de la intranet.
La firma de seguridad "ScanSafe" anunció que, según su cuenta, los documentos PDF maliciosos conformaron el 80% de los exploits para el final de 2009, como se informa en el sitio COMPUTERWORLD:
http://www.computerworld.com/s/article/9157438/Rogue_PDFs_account_for_80_of_all_exploits_says_researcher
Como ejemplo se utiliza una vulnerabilidad de stack overflow en la versión 8.1.2 de Adobe Reader, lo cual permite la ejecución de código arbitrario de forma remota.
Desarrollo
A continuación se detalla el procedimiento utilizado para tener acceso remoto a la máquina local.
La vulnerabilidad explotada consiste en un stack overflow en la función de Javascript util.printf() de Adobe Reader. Esta vulnerabilidad se detalla en el siguiente boletín del sitio SecurityFocus:
http://www.securityfocus.com/bid/30035/info
Esta vulnerabilidad se explota construyendo un documento PDF que contiene un formulario con una porción de código Javascript. Este código malicioso realiza un overflow de la pila en la llamada a la función util.printf(), lo que permite ligar una instancia del intérprete de comandos de Windows (cmd.exe) a un puerto aleatorio (en este caso el puerto 4444) para que el atacante se conecte de forma remota y ejecute comandos arbitrarios (utilizando telnet, netcat, etc.).
Para construír el documento PDF con Javascript se utiliza "Scribus", una aplicación Open Source para autoedición (http://www.scribus.net). En los sistemas operativos de la familia Debian se instala a través del comando:
sudo apt-get install scribus
En este caso se utilizó un botón para ejecutar el exploit, aunque se puede disparar automáticamente ante cualquier evento, como por ejemplo al abrir, cerrar o realizar cualquier otra acción sobre el documento PDF.
Para agregar un botón, se selecciona "Button" en la barra de herramientas "PDF Tools". Luego de dibujar el botón con el mouse, se hace clic derecho sobre el mismo y se selecciona "PDF Options > Field Properties". En la pestaña "Action" se selecciona "Type: Javascript", "Event: Mouse Down" y luego se inserta el código del exploit en el campo "Script:", el cual se puede descargar desde:
http://www.milw0rm.com/exploits/7006
Luego se presiona "OK" y se selecciona "File > Export > Save as PDF".
El atacante puede enviar este documento a la víctima a través de distintos medios, como puede ser correo electrónico, aplicaciones de Chat, IRC, pendrives, etc. Una vez que la víctima abre el documento (utilizando Adobe Reader con Javascript activado) se ejecuta el exploit y se abre el puerto 4444 para que el atacante se conecte al intérprete de comandos de forma remota.
En la siguiente figura se observa el documento abierto con Adobe Reader:
Antes de ejecutar el exploit se consulta al sistema operativo para determinar que el puerto 4444 está cerrado:
Una vez que se presiona el botón, se ejecuta el exploit y se abre una instancia del intérprete de comandos ligado al puerto 4444. Se consulta nuevamente al sistema operativo y se observa que el puerto 4444 está abierto y listo para iniciar conexiones:
A partir de este momento, desde la máquina del atacante se puede iniciar una sesión remota en la máquina del cliente y ejecutar comandos arbitrarios utilizando telnet o netcat, como se observa en la siguiente figura:
Desde la máquina de la víctima, se observa la conexión establecida con la máquina del atacante, consultando al sistema operativo:
Por otra parte, a pesar de que el antivirus de McAfee detectó algunos documentos PDF con exploits de diferentes vulnerabilidades, no detectó este exploit en particular.
Parche
Desactivar Javascript en todas las versiones de Adobe Reader y mantener actualizado Adobe Reader o migrar a una aplicación alternativa como Foxit Reader en los sistemas Windows.
Solución
Formatear el disco C:\ e instalar cualquier distribución GNU/Linux. Utilizar "evince" (http://www.gnome.org/projects/evince).
Etiquetas:
Adobe,
Adobe Reader,
articulos,
exploits,
hacking,
JavaScript,
remote code execution,
seguridad
Hace rato que no publico noticias (en gran parte porque hay muchos blogs de noticias), pero hoy tengo una muy interesante.
Durante diciembre le dieron duro a varias grandes empresas como Google o Adobe utilizando un exploit en Internet Explorer 6 que permite remote code execution. Según Google, fueron víctimas de un ataque altamente sofisticado y coordinado, mediante el cual les robaron información y accedieron a cuentas Gmail de activistas por los derechos humanos.
Otras empresas que reportaron ataques fueron Yahoo, Northrop Grumman y Dow Chemical, por nombrar algunas de las 34 que se vieron afectadas.
Al parecer los hackers utilizan el exploit para instalar el troyano Hydraq el cual les permite acceder a la red corporativa.
Los rumores dicen que el gobierno Chino está detrás del ataque, debido a que el código del exploit es tan sofisticado que sólo pudo haber sido descubierto con el respaldo de un organismo muy interesado en los resultados. Gracias a esto, Google, como contraataque, dejó de censurar los resultados de su buscador para los navegantes chinos.
Estos ataques recibieron el nombre "Operación Aurora", nombre con el cual pueden encontrar muchos posts en internet, además del código para utilizarlo >=)
En exploit database pueden descargar un ejemplo del código en python listo para ser testeado. Este aprovecha la vulnerabilidad y nos abre la calculadora de Windows. Yo lo probé y funciona perfecto, el antivirus ni se entera.
Metasploit también agregó el exploit a su base de datos, así que si actualizan el framework, lo tendrán a su disposición. En el blog de metasploit pueden encontrar información sobre cómo utilizarlo.
Y de qué va la vulnerabilidad? Bueno, al parecer es posible acceder a un puntero inválido después de que se borra un objeto. Armando un ataque especial, intentando acceder al objeto liberado, es posible causar remote code execution.
El problema resultó tan serio que el gobierno alemán salió a pedir a sus usuarios que dejen de utilizar IE hasta que los de MS parchen el agujero.
Por su parte, MS pide a sus usuarios que actualicen a IE8, aunque admiten que tanto IE7 como 8 también son vulnerables al problema.
Igualmente MS sigue con su política "parcho cuando YO quiero" y el parche para este problema está planeado para el 9 de febrero!!! Realmente es de no creer!
Mi recomendación? ya se deben imaginar... no usen IE!, ni Windows! Pero bueno, si no les queda otra que usar Windows, al menos prueben Firefox u Opera.
Algunas referencias para leer son:
- Attack code used to hack Google now public
- Hack of Google, Adobe Conducted Through Zero-Day IE Flaw
- Microsoft Says Upgrade To IE8, Even Though It's Vulnerable
Durante diciembre le dieron duro a varias grandes empresas como Google o Adobe utilizando un exploit en Internet Explorer 6 que permite remote code execution. Según Google, fueron víctimas de un ataque altamente sofisticado y coordinado, mediante el cual les robaron información y accedieron a cuentas Gmail de activistas por los derechos humanos.
Otras empresas que reportaron ataques fueron Yahoo, Northrop Grumman y Dow Chemical, por nombrar algunas de las 34 que se vieron afectadas.
Al parecer los hackers utilizan el exploit para instalar el troyano Hydraq el cual les permite acceder a la red corporativa.
Los rumores dicen que el gobierno Chino está detrás del ataque, debido a que el código del exploit es tan sofisticado que sólo pudo haber sido descubierto con el respaldo de un organismo muy interesado en los resultados. Gracias a esto, Google, como contraataque, dejó de censurar los resultados de su buscador para los navegantes chinos.
Estos ataques recibieron el nombre "Operación Aurora", nombre con el cual pueden encontrar muchos posts en internet, además del código para utilizarlo >=)
En exploit database pueden descargar un ejemplo del código en python listo para ser testeado. Este aprovecha la vulnerabilidad y nos abre la calculadora de Windows. Yo lo probé y funciona perfecto, el antivirus ni se entera.
Metasploit también agregó el exploit a su base de datos, así que si actualizan el framework, lo tendrán a su disposición. En el blog de metasploit pueden encontrar información sobre cómo utilizarlo.
Y de qué va la vulnerabilidad? Bueno, al parecer es posible acceder a un puntero inválido después de que se borra un objeto. Armando un ataque especial, intentando acceder al objeto liberado, es posible causar remote code execution.
El problema resultó tan serio que el gobierno alemán salió a pedir a sus usuarios que dejen de utilizar IE hasta que los de MS parchen el agujero.
Por su parte, MS pide a sus usuarios que actualicen a IE8, aunque admiten que tanto IE7 como 8 también son vulnerables al problema.
Igualmente MS sigue con su política "parcho cuando YO quiero" y el parche para este problema está planeado para el 9 de febrero!!! Realmente es de no creer!
Mi recomendación? ya se deben imaginar... no usen IE!, ni Windows! Pero bueno, si no les queda otra que usar Windows, al menos prueben Firefox u Opera.
Algunas referencias para leer son:
- Attack code used to hack Google now public
- Hack of Google, Adobe Conducted Through Zero-Day IE Flaw
- Microsoft Says Upgrade To IE8, Even Though It's Vulnerable

Hace unos días leí que la gente de Offensive Security estaba en tratativas con milw0rm para poner on-line la base de datos de exploits bajo su dominio y mantenerla actualizada. Ayer me entero que esta base de datos ya está on-line y su flamante nombre es Offsec Exploit Archive.
Esta nueva base de datos cuenta con los exploits de milw0rm así como también con algunos nuevos y ya están aceptando contribuciones.
Para el que no haya conocido milw0rm, ésta solía ser la primer fuente de exploits para investigadores y entusiastas, donde la gente que descubría un exploit lo compartía con el resto, probando que una vulnerabilidad podía ser explotada.
Con el tiempo, el administrador del sitio str0ke decidió que no podía seguir revisando los exploits que suministraban terceros y decidió cerrar el site. A pesar de esto, el site volvió a estar on-line un tiempo y se agregaron nuevos exploits, pero desde hace unas semanas esto se detuvo.
Por suerte, la gente de Offensive Security, encargados entre otras cosas de la genial distribución BackTrack, decidió tomar la posta y encargarse de la labor que llevaba a cabo str0ke, brindándonos un nuevo site, muy similar a milw0rm, donde la gente pueda compartir exploits.
El nuevo site lo pueden visitar ingresando en http://exploits.offensive-security.com/ o en http://explo.it
Etiquetas:
exploits,
hacking,
milw0rm,
news,
offensive security,
pentesting,
seguridad
Leyendo el blog de Metasploit me encontré con que el excelente framework de exploits usado para penetration-tests fue adquirido por una compañía llamada Rapid7. Esta compañía (por suerte) se dedica a la seguridad, proveyendo su servicio a organizaciones para optimizar la seguridad de la red, seguridad de aplicaciones Web y seguridad en base de datos.La pregunta que siempre surge cuando un software libre es comprado por una compañía es "qué va a pasar con la licencia?"...
Para dejarnos tranquilos (?!) el creador de Metasploit nos asegura desde el blog que la adquisición solo traerá buenas consecuencias, que Rapid7 no piensa cambiar la naturaleza open-source del proyecto, ni tampoco su licencia.
Entre las buenas noticias podemos decir que el creador (HD Moore) y uno de los desarrolladores (Egypt) ahora podrán dedicarse de tiempo completo al proyecto, estando Moore como Arquitecto en Jefe y Egypt como core developer. Además estarían contratando a un desarrollador de exploits, un diseñador de interfaces y un ingeniero QA.
Todo esto quiere decir que Metasploit se estará actualizando más seguido, agregando exploits, reparando bugs, y agregando nuevas funciones mucho más rápido que antes.
Esperemos que todo sea como dicen y que la compra no cague un excelente framework libre, estaremos viendo el progreso pronto.
Etiquetas:
exploits,
hacking,
metasploit,
news,
pentesting,
seguridad
El problema del buffer overflow (bof) data de tiempos inmemorables... diría que desde que se inventaron las computadoras, aunque recién fueron entendidos años más tarde, en la década de los 70s. Esta vulnerabilidad es tan simple como suena, pero tan peligrosa como para corromper programas y lograr que las máquinas hagan lo que el atacante quiera.Buffer overflow trata sobre incluir en un buffer más datos de los que éste está destinado a almacenar, ocasionando que los bytes sobrantes sobreescriban otras posiciones de memoria, donde hay otros datos. Si los datos "extra" son creados y posicionados correctamente en la sobre escritura, un atacante puede lograr que el programa ejecute el código que desea.
Este problema está presente siempre que el programa lea datos de alguna fuente y los asigne a un buffer interno, ya sea una entrada de usuario por línea de comandos, por ventana a lo windows, leyendo un archivo, leyendo un socket, etc, etc.
Si bien uno creería que al ser un problema conocido hace taaaaantos años, actualmente debería ser menos frecuente y menos peligroso, la realidad demuestra totalmente lo contrario. Los buffer overflows "caminan" entre nosotros y son tan peligrosos como hace 20 años. Basta buscar un poco en internet para encontrar exploits de este tipo a montones. El bof es de las vulnerabilidades más peligrosas, permitiendo a un atacante ejecutar código localmente, remotamente, escalar privilegios, atacar otras máquinas, cualquier cosa que se les ocurra.
Secciones de un programa en memoria
Para poder entender los buffer overflows, es necesario conocer cómo se dividen los programas en la memoria. Estos se dividen en varias secciones, y las 6 más importantes son las siguientes:
- .text: contiene las instrucciones del programa, es decir, la parte ejecutable. El tamaño de esta sección es fijada en tiempo de ejecución, cuando se carga el proceso.
- .data: se utiliza para almacenar variables globales inicializadas (por ejemplo: int enData = 0;). Esta sección también es fija en tiempo de ejecución.
- .bss (below stack section): contiene las variables globales no inicializadas, como por ejemplo: int enbss;. El tamaño es fijado en tiempo de ejecución.
- Heap: esta sección se usa para almacenar variables alocadas dinámicamente y crece desde las direcciones de memoria más bajas hacia las más altas. La alocación se controla mediante las funciones malloc() y free(). Un ejemplo de variable alocada en tiempo de ejecución sería una declarada así: int dinamica = malloc(sizeof(int));
- stack: esta es la conocida pila. La sección de la pila permite guardar datos entre llamadas a funciones y crece desde las direcciones altas de memoria hacia las direcciones bajas. Esta forma de crecimiento es la que permite buffer overflows.
- entorno/argumentos: se usa para almacenar una copia de las variables a nivel sistema que pueden ser requeridas por el proceso durante su ejecución. Como ejemplo, alguna de estas variables son el path, nombre del shell, hostname, etc. Esta sección es escribible, permitiendo exploits del tipo format string y buffer overflows.
En la figura pueden observar mejor que lugar ocupa cada sección dentro de la memoria:
Tipos de buffer overflow
Básicamente los buffer overflow pueden ser de dos tipos, stack based o heap based.
Para entender los ataques stack based overflow, necesito explicar un poco de lo que sucede cuando llamamos a una función en un programa. En una llamada a función, sucede lo siguiente:
- se colocan los parámetros pasados a la función dentro de la pila, en orden inverso.
- se salva el registro que indica la dirección de la próxima instrucción (eip) dentro de la pila. Esta será la dirección de retorno.
- se ejecuta el comando call y la dirección de la función llamada se coloca dentro de eip.
La función recién llamada debe encargarse de lo siguiente:
- salvar el valor del registro que indica la base de la pila de la función anterior (ebp).
- colocar el valor de esp (registro que apunta al tope de la pila) en ebp. Con esto se setea la base de la pila de la función llamada.
- decrementar esp para hacer espacio para las variables locales de la función llamada. Cabe destacar que la pila crece en dirección contraria a las direcciones de memoria, por eso se decrementa en lugar de aumentar.
- se ejecuta la función
Una vez que la ejecución de la función se completa, sucede lo siguiente:
- se coloca el valor de ebp en esp (limpiamos la pila actual).
- se saca el valor de la pila actual y se coloca en ebp (restauramos la pila de la función llamadora).
- se saca de la pila el valor de retorno y se coloca en eip. Con esto (si todo sale bien) volvemos a donde se quedó la función anterior antes de llamar a la actual.
Los exploits stack-based utilizan las variables almacenadas en la pila para explotar un programa, sobreescribiendo la dirección de retorno de una función (almacenada en la pila), ya sea para llamar a un código insertado por el atacante o bien para llamar alguna función de librería que realice una función particular (el llamado return to libc attack).
Teniendo en mente la explicación de lo que sucede al llamar una función, paso a explicar el ataque utilizando un siempre más entendible ejemplo. Supongamos que tenemos la siguiente función:
void explotable()
{
char explotame[4];
strcpy(explotame, "AAAAAAAAAAAA");
}
La pila en este caso tendrá el siguiente formato:
Dado que sólo se reservaron 4 bytes para "explotame" y se colocaron 12 As, osea, 12 bytes, en dicha variable, estos sobre-escribirán tanto el valor del ebp anterior como el de la dirección de retorno, la cual ahora será 0x41414141, osea AAAA. Como se imaginarán, cuando la función intente retornar, intentará ir a la dirección 0x41414141, ocasionando un segmentation fault. Con esto ya se pueden imaginar que un atacante metódico, en lugar de colocar puras As, insertará los bytes justos para que la dirección de retorno apunte a código insertado por él (ataque conocido como arbitrary code execution), el cual probablemente haya ingresado en la misma pila al sobre escribir otras variables. También puede colocar la dirección de una función de librería (conocido como return to libc attack), la cual es conocida. Una función interesante para llamar es system().
Para el caso de los ataques heap-based, hay que pensar de forma distinta. La memoria heap es la memoria donde se almacenan las variables que son alocadas en tiempo de ejecución, comúnmente utilizando la función malloc. En el heap no hay direcciones de retorno ni algún otro registro salvado, así que los atacantes tendrán que utilizar una estrategia distinta. El heap crece en la dirección que crecen las direcciones de memoria, esto es, contrario a la dirección que crece la pila.
Algunos ataques interesantes consisten en:
- inyectar valores arbitrarios en variables para sobre-escribir variables adyacentes y cambiar la funcionalidad de un procedimiento.
- sobre escribir direcciones de punteros a funciones. En el caso que una variable en el heap almacene un puntero a una función, podríamos cambiar esta dirección y hacer que apunte a una función de sistema u otra que nos interese.
- sobre escribir variables para lograr algún beneficio. Pueden imaginarse si una función bancaria pensaba aumentar la cuenta de un atacante en u$s10 y despues de sobre escribir dicha variable ahora la incrementa en u$s10.000???
Si bien estos ataques no ser tan redituables como los stack-based, si han captado buena atención y han vulnerado multitud de aplicaciones.
Return to libc attack
Este ataque surge para lograr explotar un buffer overflow en un sistema que cuenta con pilas no-ejecutables (osea, el SO no ejecuta código que se encuentre en la pila). Esta técnica utiliza el eip (dirección de retorno) almacenado en la pila para apuntar a funciones de la librería libc. Las funciones de libc son usadas por todos los programas, así que estarán siempre presentes para ser llamadas. Una función interesante es system() que permite ejecutar programas en el sistema. En este caso, un atacante podría sobreescribir datos en la pila para que la función system() ejecute algún programa de nuestra elección, como por ejemplo /bin/bash.
Por supuesto que este ataque no se limita a libc, sino que puede utilizar cualquier librería que sepamos se encuentra en el programa.
Exploits encadenados
Si bien el código de un programa puede estar libre, o relativamente libre, de vulnerabilidades buffer overflow, puede que las librerías que utiliza no lo estén, ocasionando que el resultado final sea un programa explotable. De esto tratan los exploits encadenados, de heredar exploits presentes en librerías y haciendo al programa resultante vulnerable.
Cabe destacar que esta definición se aplica a cualquier vulnerabilidad, no sólo a los buffer overflows.
Es interesante el reciente caso de net/tun, donde el programa presentaba un bug que no estaba escrito en net/tun, sino que aparecía luego de utilizar el compilador para optimizar, el cual removía una sentencia if-then que creía innecesaria, introduciendo un exploit del kernel. Pueden leer un poco más sobre este caso en infoworld.com.
Conclusión
Buffer overflow sigue asesinando aplicaciones, pasan los años y sigue omnipresente, a la cabeza de los problemas más graves que debe enfrentar un usuario/administrador al utilizar sus programas. En los últimos 6 meses he recibido 1480 mensajes en la lista de distribución bugtrack, de los cuales 220 trataron sobre buffer overflows, representando un 6,73% del total... un número gigante, teniendo en cuenta que se codea con los exploits más recurrentes XSS y SQL injection.
A diferencia de XSS y SQL injection, lograr explotar un buffer overflow es muchisimo más complejo, no solo por los mecanismos de defensa actuales, sino porque requiere de experiencia, conocimientos de bajo nivel, tiempo y mucha paciencia. Realmente admiro los hackers que logran explotar buffer overflows, no es un trabajo que podría hacer cualquiera, como en XSS y SQL injection.
La idea original de este artículo era hacer un review de los mecanismos de detección más importantes, pero me parecía bastante descolgado explicar eso sin dar una explicación sobre los buffer overflows... el artículo se terminó extendiendo tanto que decidí partirlo en dos. En los próximos días estaré publicando los mecanismos de defensa contra los buffer overflows... stay on-line!
Referencias
Gray Hat Hacking - The Ethical Hacker's Handbook
Buffer Overflow wiki
Prevention and Detection of Buffer Overflow Attacks
Etiquetas:
articulos,
buffer overflow,
exploits,
hacking,
seguridad
Suscribirse a:
Entradas (Atom)


