Introduction Prime factorization is known as a way to crack the RSA cryptosystem code. Currently, most of the best modern factoring algorithms are based on the idea behind Fermat's method of factorization. Fermat's factorization method uses that fact that any number can be expressed as the difference between two squares. Given a number n , the algorithm consists of finding x and y such that (x 2 -…
Introduction Digital forensics is the process of recovering and investigating electronic data. This forensic science is mostly used by law enforcement but some companies hire digital forensics experts to investigate on unauthorized network intrusion. The typical forensic process encompasses the seizure, forensic imaging and analysis of digital media and the production of a report into collected…
Introduction We were tasked by a small web developer team to perform a security assessment of their mobile app backend which is a REST API. The architecture is rather simple there is only three Linux servers. Node.js MongoDB Redis First we performed a few arbitrary tests without access to the source code and we discovered that a few unexpected input at some endpoints would crash the backend…
Introduction Exploitation of a 32-bit binary with a stack based buffer overflow and Return Oriented Programming. We believe the expected solution for this challenge was a race condition but we found another way around. Static Analysis The 32-bit ELF binary is very straightforward, it's only purpose is reading files and putting data in a buffer. Usage ./prog <filename> Obviously there is a…
Introduction Frida is a portable dynamic instrumentation Framework. With Frida you can get your own JavaScript code injected into any process, hook any function, trace code. It works on Windows, Mac, Linux, iOS and Android. Frida's core is written in C and injects Google's V8 engine into the target processes. In this tutorial you will learn how to install Frida and how to hook a function in…
Introduction In computer sciences reverse engineering is the process of taking a software program's binary code to reproduce it, to see how it works or to find certain bugs. We created a list of free software in active development with an emphasis on innovation and renewal. Lexicon A hex editor is a computer program that allows to view and edit binary data that constitutes a computer file. A…
Introduction The Diffie-Hellman protocol is a method for two users to generate a shared private secret with which they can then exchange information across a public channel. This protocol is mostly used to secure a variety of network services. A Diffie-Hellman key exchange by itself does not provide authentication of the communicating parties and is thus vulnerable to a man-in-the-middle attack.…
Introduction Thread-local storage (TLS) is a computer programming method that uses static or global memory local to a thread. Developers use TLS to provide unique data for each thread that the process can access using a global index. TLS calls are subroutines that are called by the system before the entry point. There is a .tls section in the PE file that describes the place of TLS callbacks. Some…
Introduction From the development of password guessing algorithms based on human behaviour to the building of highly efficient GPU cracking platform able to guess most passwords in a matter of seconds, password cracking has evolved. This article highlights the most interesting things we learned about passwords over the last years. Easy to remember, hard to guess A password is a secret, it is…
Introduction This writeup is about how we solved the "FTP" Reverse Engineering challenge using Z3 The Theorem Prover . Context A custom FTP service is running on the the port 12012 of the target, we have to find a way to bypass the authentication mechanism. The binary is an ELF 64-bit, with a simple static analysis we find out that to authenticate a user the FTP service compare the username with…
Introduction McAfee VirusScan Enterprise quarantined files are stored with the .BUP file extension. If you need to recover the content of the original file for digital forensics or reverse engineering purposes, you can use the Quarantine Manager. But In some situations you might not be able to restore the .BUP file with the Quarantine Manager. Quarantine file Structure McAfee VirusScan Enterprise…
Introduction This Reverse Engineering challenge was probably the most interesting one I ever solved. It took me a few days to complete it but it was totally worth it because I learned about symbolic execution and how to use Z3 The Theorem Prover. I will write more articles about Z3 in a near future but until a later time I will explain how to solve this challenge. Context The goal of this Reverse…
Introduction In this article I will summarize the different methods that were used to complete the four network challenges during the HackingWeek 2015. The essential tool is Wireshark, you will also need a scripting language such as Python. Network 1 Le fichier pcap suivant contient une capture réseau d'une connexion FTP. La clef de ce challenge est contenu dans l'un des fichiers transférés…
Introduction In this article we will summarize the different methods that were used to complete the four forensic challenges during the HackingWeek 2015. We recommend to use a Linux distribution and install a memory forensic framework such as Volatility or Rekall . L'image mémoire fournie a été capturée sur une machine compromise à vous de l'analyser pour répondre aux questions (il s'agit de la…
Introduction The goal of the second cryptography challenge was to factorize a 1024 bits RSA modulus and to reconstruct the private key d . Bob utilise une clef publique RSA avec l'exposant public e = 65537 et le module: N =…
Introduction The goal of the first cryptography challenge was to break the ADFGVX cipher and use the keyword to find the flag. It was rather difficult to complete this challenge with the ciphertext only so after a few hours the organizers added some hints. ADFGVX était le chiffre utilisé par les Allemands pendant la première guerre mondiale. Essayez de vous y frotter en déchiffrant ce message dont…
Introduction "Hello, World!" is one of the simplest computer program, it outputs "Hello, World!" on a display device. It is traditionally used to introduce beginners to a programming language. During the last years the 32-bit architectures almost disappeared on modern CPUs, it has been replaced by 64-bit ones. An assembly languages is often used for the optimization of size or performance, it is…
Introduction During a penetration test or a hacking competition, it is common to use already existing shellcode as the payload in the exploitation of a software vulnerability. A file reader shellcode is generally a rather small code able to read the content of a file and to write it on the standard output. It can be useful to display the content of sensitive files such as /etc/passwd or the…
Introduction Cross-site scripting (XSS) is one of the three most exploited security vulnerability on the web. A XSS vulnerability enables attackers to inject client-side script into a Web page viewed by other users. Although it's a client-side attack it can be critical and lead to a full compromise. Unfortunately XSS vulnerabilities are often misunderstood and overlooked. Along the years…
Introduction If you have never heard about XSS Keyloggers, it's a simple way to grab informations a user type on a web page. Keylogging is the action of recording the keys struck on a keyboard. A keylogger can be used to spy someone, grab their passwords, intercept their conversations or steal their personal informations. In most case an attacker will steal the SESSION cookie to impersonate the…