Giter VIP home page Giter VIP logo

hackinbosafeedition's Introduction

x86 shellcoding cakestar

Introduzione

Quando facciamo un penetration test, il più delle volte utilizziamo exploit già pronti o usiamo strumenti come msvfenom per creare un payload con qualche opzione particolare.

Esistono situazioni dove hai bisogno di essere più creativo: devi evitare l'antivirus, devi nasconderti dall'IDS o semplicemente vuoi divertirti un po' ed avere il pieno controllo del codice che sarà eseguito sulla macchina.

Ecco, in questo talk vedremo come fare evolvere uno shellcode in ambiente Linux x86 aggiungendo riscrittura nel nostro codice e creando un encoder custom.

Il bypass dell'antivirus forse non sarà garantito, ma il divertimento... quello sì.

Slide

Le slide sono disponibili qui

A chi è rivolto?

  • Penetration tester
  • Analisti SOC
  • Sviluppatori

Livello di difficoltà

BASSO

Skill richieste

  • Conoscenze base di assembler x86
  • Sapere cos'è una system call
  • Un pizzico di python o ruby o il linguaggio che più vi piace a cui accodare il nostro shellcode.

Cosa mi serve

Preparo la vittima

Ho bisogno di compilare il programma vittima per iniziare le esercitazioni.

$ cd victim
$ ./compile.sh pwnme.c
$ sudo "chown root:root pwnme"
$ sudo "chmod +s pwnme"

L'inizio della nostra storia

Da una analisi precedente sappiamo che il software pwnme è vulnerabile a buffer overflow. Il contenuto del file pwnme.txt, necessario al funzionamento del nostro tool, vieme copiato in una variabile, purtroppo senza fare un controllo sulla lunghezza dei dati letti da file.

Nel caso il file di testo sia costituito da troppi caratteri, dopo 84 byte avremmo la sovrascittura del registro EIP e di fatto, l'inizio della nostra storia.

Il PoC del nostro exploit sarà questo:

#!/usr/bin/env python3

import os;

eip="BBBB"
shellcode = "A"*84+eip+"C"*200
f = open("pwnme.txt","w")
f.write(shellcode)
f.close()

Abbiamo provato con metasploit a generare un payload con il comando:

$ msfvenom -p linux/x86/exec CMD=/bin/sh -f elf -o a.out

Purtroppo veniamo individuati da alcuni antivirus, quindi dobbiamo trovare un altro modo per scrivere il nostro shellcode.

Il payload di msfvenom su VirusTotal

Disclaimer

Questo talk non è su come trovare un buffer overflow ma su come customizzare il nostro shellcode. Il programma vulnerabile quindi è stato scritto introducendo la vulnerabilità in maniera forzata, in particolare:

  • è stato aggiunto dell'inline assembler per mettere a disposizione l'istruzione JMP ESP
  • avendo disattivato la randomizzazione dello stack, ho il nuovo valore del registro EIP sempre fisso

Queste tecniche possono ingannare strumenti basati su signature. Strumenti evoluti che provano ad eseguire il codice in sandbox potrebbero comunque riconoscere i nostri payload. Un security engineer che troverà il payload e ne farà il reverse sarà comunque in grado di riconoscerne il contenuto malevolo.

Shellcode

Andremo ad analizzare lo shellcode che esegue "/bin/sh" e queste saranno le tappe del nostro viaggio:

hackinbosafeedition's People

Contributors

thesp0nge avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.