Linee guida per la Certificazione OSED

Tempo di lettura: 8 minuti
Data pubblicazione: June 29, 2023

Negli scorsi articoli, come avrete notato, ho pubblicato solo articoli inerenti al Buffer Overflow, partendo dai semplici Stack Overflow per poi via via arrivare alla tecnica ROP e al bypass di DEP.

Il motivo principale è perchè stavo preparando la certificazione OSED, che ho superato con successo qualche giorno fa!

Windows User Mode Exploit Development (EXP-301) è un corso che insegna agli studenti le basi dello sviluppo di exploit, basato interamente su Windows x86. Ad oggi non è ancora stata inserita la parte x64, ma credo sia più dovuto al fatto che la quantità di informazioni inserite sia già molto ampia.

Il corso inizia con un ripasso di assembly e del debugger WinDBG, per poi passare ai classici Stack Buffer Overflow, SEH ed egghunter (senza protezioni DEP e ASLR).

Successivamente c’è un capitolo sull’utilizzo di IDA, creazione di custom shellcode e di Reverse Engineering.

Infine, si focalizza molto sul bypass delle protezioni DEP e ASLR, concludendo con le vulnerabilità di Format String.

L’esame invece è il classico esame di OffSec, 48 ore di laboratorio e 24 di reportistica; composto da tre task, tra cui il reverse engineering, la creazione di exploit e la creazione di shellcode custom.

Preparazione al corso

Prima di iniziare il corso, consiglio vivamente di studiare in maniera autonoma l’assembly, in modo da arrivare preparati. Se non sapete l’assembly e il funzionamento base della memoria, all’inizio riscontreerete parecchie difficoltà, sebbene venga spiegato anche sul libro del corso. Alcune risorse utili che consiglio sono:

  1. Introductory Intel x86
  2. Debuggers 1011: Introductory WinDbg

Altre guide che potete seguire prima di iniziarlo sono:

  1. Tutte quelle di Corelan. Anche se sono passati diversi anni, la maggior parte degli eseguibili funzionano anche su Windows 10 (e se non vanno potete usare senza problemi Windows XP). Corelan è la bibba del Buffer Overflow ed una delle guide più dettagliate che ci siano in rete.
  2. FuzzySecurity con la serie Windows Exploit Development Tutorial Series.
  3. epi052 con OSCE Exam Practice.

Esercizi Stack Overflow

Prima di abilitare DEP e ASLR è necessario partire dai classici Buffer Overflow senza protezioni, per esempio:

  1. DiskSorterEnterprise 9.5.12
  2. EasyRMtoMP3Converter
  3. Vulnserver
  4. Brainpain
  5. dostackbufferoverflowgood

Esercizi SEH Overflow

Superato il capitolo dello stack overflow si passa al SEH, alcuni tra i tanti:

  1. DocPrint Pro 8.0
  2. EFS Easy Chat Server 3.1
  3. Easy File Sharing Web Server 7.2

Esercizi Egghunter

Si passa poi agli egghunter, per esempio:

  1. freeFTPd 1.0.10
  2. Sysax 5.53
  3. TFTP Server 1.4

Esercizi Shellcoding

Per quanto riguarda la parte di creazione shellcode, il libro è molto dettagliato e spiega in vari modi come creare shellcode. Ho spiegato il procedimento in questo articolo; ciò che consiglio di fare è, una volta concluso il capitolo, creare una serie di shellcode custom in modo da esercitarsi, per esempio:

  1. Creazione e rinomina di una file.
  2. Download di un file tramite HTTP/RDP ed esecuzione
  3. Spostamento e cancellazione di un file
  4. etc.

Esercizi DEP Bypass

Create le basi, è ora di abilitare il DEP e imparare ROP. Si possono prendere gli stessi esercizi fatti precedentemente e abilitarlo, oppure:

  1. Vulnserver
  2. Easy File Sharing Web Server 7.2
  3. Easy RM to MP3 Converter 2.7.3.700
  4. Mini-stream RM-MP3 Converter 3.1.2
  5. VUPlayer 2.49
  6. CloudMe 1.11.2
  7. Disk Sorter Enterprise 9.5.12

Esercizi ASLR Bypass

Per quanto riguarda ASLR è più difficile, in quanto serve o un’information leak o che ASLR sia disabilitato (e torniamo nel DEP in pratica). Per questa parte sono sufficenti gli esercizi dati dal libro.

Valutazione del corso

Sebbene manchi la parte di x64, credo sia una delle migliori fonti in circolazione per imparare lo sviluppo di exploit su Windows. Il libro è un concentrato di informazioni utili che si, si possono trovare liberamente su internet, ma segue un filo logico che difficilmente ho trovato leggendo le guide online.

Nessuna delle tecniche che insegna è nuova e molte sono basate su vecchi paper ed exploit pubblici, ma l’avere una guida che ti porta passo passo ad approfondire lo sviluppo di exploit, il reverse engineering e il bypass delle protezioni DEP e ASLR l’ho trovato utilissimo.

Una volta concluso il corso, per esercitarsi prima dell’esame è sufficente andare su exploit-db, cercare exploit pubblici con bypass DEP e ASLR, scaricarli e provare in autonomia ad exploitarli (prima senza DEP, poi abilitandolo).

Inoltre ci sono anche degli eseguibili compilati ad hoc da altri studenti, come:

  1. QuoteDB
  2. Rainbow1 e 2
  3. server.exe

Ho notato che mi è stato molto utile anche creare da zero un server vulnerabile ed exploitarlo. Fare reverse engineering di un eseguibile di cui si conosce il codice ti aiuta molto a capire certe operazioni assembly con cui altrimenti faresti molta più fatica.

L’unica nota negativa che ho trovato (ma è una mia opinione) è la parte di Reverse Engineering, l’avrei preferita più corposa a approfondita, magari con qualche esercizio aggiuntivo.

Consiglio inoltre di fare tutti gli extra mile! Non sono li tanto per, ma ti danno quella spinta ulteriore che ti permette di poter dire di aver capito a fondo l’argomento.

Reportistica

Poichè dopo le 48 ore di laboratorio è obbligatorio scrivere un report professionale per descrivere i vari passi che sono stati messi in atto. Ricordatevi che non avendo più accesso al laboratorio, non potrete più ottenere screenshot per la stesura del report. Quindi durante l’esame scrivetevi tutti i comandi che avete usate e fate screenshot ogni piccolo traguardo ottenuto, altrimenti non potrete provare quello che avete fatto nell’esame.

Conclusioni

Per chi volesse ho caricato delle note che ho scritto durante la preparazione, potete trovarle a questo indirizzo: OSED-Notes.

Altre risorse utili sono:

Happy hacking!