Los investigadores de seguridad y también los estudiantes que normalmente participan en competiciones CTF (Capture the Flag) deben proteger su «bandera» y a la vez, intentar conseguir la del equipo rival. Para conseguirlo, se pueden valer de sus conocimientos y también de herramientas hechas que automatizan determinadas acciones, Pwntools es un conjunto de utilidades para hacernos la vida más fácil en este tipo de competiciones.
El proyecto Pwntools es un conjunto de utilidades, librerías y frameworks orientado específicamente a hacer la vida más fácil de los investigadores, y estudiantes de ciberseguridad que participan en este tipo de retos. Pwntools está escrito completamente en Python y proporciona una gran cantidad de módulos específicos para realizar una determinada tarea.
Por ejemplo tenemos un módulo orientado específicamente a Android utilizando adb, también tenemos un módulo para el protocolo SSH, otro para utilizar Sockets con los protocolos TCP y también UDP, utilidades para comprobar el CRC de determinados archivos, un módulo de hashing para comprobar que un determinado archivo no ha sido alterado, un módulo orientado específicamente a la web etc. a continuación podéis ver todos los módulos que tiene Pwntools 3.0:
- pwnlib.adb — Android Debug Bridge
- pwnlib.asm — Assembler functions
- pwnlib.atexception — Callbacks on unhandled exception
- pwnlib.atexit — Replacement for atexit
- pwnlib.constants — Easy access to header file constants
- pwnlib.context — Setting runtime variables
- pwnlib.dynelf — Resolving remote functions using leaks
- pwnlib.encoders — Encoding Shellcode
- pwnlib.elf — Working with ELF binaries
- pwnlib.exception — Pwnlib exceptions
- pwnlib.fmtstr — Format string bug exploitation tools
- pwnlib.gdb — Working with GDB
- pwnlib.log — Logging stuff
- pwnlib.memleak — Helper class for leaking memory
- pwnlib.replacements — Replacements for various functions
- pwnlib.rop — Return Oriented Programming
- pwnlib.rop.rop — Return Oriented Programming
- pwnlib.rop.srop — Sigreturn Oriented Programming
- pwnlib.runner — Running Shellcode
- pwnlib.shellcraft — Shellcode generation
- pwnlib.shellcraft.amd64 — Shellcode for AMD64
- pwnlib.shellcraft.arm — Shellcode for ARM
- pwnlib.shellcraft.common — Shellcode common to all architecture
- pwnlib.shellcraft.i386 — Shellcode for Intel 80386
- pwnlib.regsort — Register sorting
- pwnlib.shellcraft.thumb — Shellcode for Thumb Mode
- pwnlib.term — Terminal handling
- pwnlib.timeout — Timeout handling
- pwnlib.tubes — Talking to the World!
- pwnlib.tubes.process — Processes
- pwnlib.tubes.serialtube — Serial Ports
- pwnlib.tubes.sock — Sockets
- pwnlib.tubes.ssh — SSH
- pwnlib.ui — Functions for user interaction
- pwnlib.useragents — A database of useragent strings
- pwnlib.util.crc — Calculating CRC-sums
- pwnlib.util.cyclic — Generation of unique sequences
- pwnlib.util.fiddling — Utilities bit fiddling
- pwnlib.util.hashes — Hashing functions
- pwnlib.util.iters — Extension of standard module itertools
- pwnlib.util.lists — Operations on lists
- pwnlib.util.misc — We could not fit it any other place
- pwnlib.util.net — Networking interfaces
- pwnlib.util.packing — Packing and unpacking of strings
- pwnlib.util.proc — Working with /proc/
- pwnlib.util.safeeval — Safe evaluation of python code
- pwnlib.util.web — Utilities for working with the WWW
Instalación de Pwntools 3.0
La instalación de este conjunto de herramientas es muy sencilla, simplemente debemos tener instalado Python 2.7 en nuestro sistema operativo, y a continuación instalar Pwntools desde repositorios oficiales de Python:
apt install python2.7 python2.7-dev python-pip
pip install --upgrade pwntools
Pwntools 3.0 está desarrollado sobre el sistema operativo Ubuntu, pero funciona correctamente en otras distribuciones basadas en Linux e incluso en Mac OS X debido a que está escrito en Python.
Os recomendamos acceder a la página web oficial de Pwntools donde encontraréis toda la información, también podéis acceder al GitHub oficial del proyecto así como a la extensa documentación de todos y cada uno de los módulos de Pwntools.