← Tutti i video

TryHackMe – M4tr1x: Exit Denied (hard) (ITA)

Guarda su YouTube → 1:48:31 18 gennaio 2022
CybersecurityCTF

Descrizione

In questo video mostro un walkthrough completo della room/macchina Python Playground offerta da tryhackme. Link di interesse: - https://archive.leonardotamiano.xyz/yt/thm/03/ - https://github.com/GeardoRanger/M4tr1xBrute ------------------------------------ Timestamps: 00:00 nmap 02:30 enumerazione forum (web server) 07:20 registrazione nuovo utente 09:50 piattaforma per bug bounty 14:50 lista vulnerabilità 19:30 brute force login con python (libreria requests) 31:20 recap script 34:00 altra enumerazione forum 35:35 rm -rf /WINDOWS (!) 35:55 modManagerv plugin 40:30 decodificare messaggio del keymaker con python (codifica ASCII) 49:40 crackare chiave con python (pgp2john + permutations) 59:20 entrare nel server mysql 01:02:50 impersonificare BlackCat tramite la login_key 01:10:10 descrizione servizio SSH-TOTP 01:20:30 attaccare servizio SSH-TOTP con python 01:32:55 user flag 01:33:25 privilege escalation con pandoc 01:41:30 root flag (e perché è importante conoscere '--') 01:45:00 loggare come bigpaul per web flag ------------------------------------ Alcuni dati personali - Email: leonardotamiano95@gmail.com - Website: https://leonardotamiano.xyz

Commenti 16

I commenti vengono da YouTube e sono aggiornati periodicamente.

  1. @davidebonati342 18 gennaio 2022 1
    Ciao, macchina molto interessante, chiarissime le spiegazioni con python, mi sono un po' perso nella parte SSH-TOTP ma me la riguarderò quando ho tempo, per caso hai in programma di fare la parte di buffer overflow di thm?
    2 risposte
    1. @esadecimale Autore 18 gennaio 2022 2
      L’idea era quella di generare un codice OTP per entrare nell’account di architect tramite SSH. Il codice però era dinamico, e veniva calcolato dal server allo scadere di ogni minuto. Era quindi un codice che cambiava. La computazione che portava al calcolo del codice era descritta nei vari diagrammi. Quei diagrammi facevano vedere come calcolare il codice necessario per entrare. Per calcolare il codice era necessario conoscere quattro diverse cose: 1. Un codice fisso che client e server condividevano (la pre-shared secret key). 2. Il tempo corrente (timestamp) in tre diverse zone del mondo rispetto alla convenzione UTC. Per quanto riguarda la prima informazione, ovvero la pre-shared secret key, era uno dei codici presenti nell’immagine. Per quanto riguarda invece le nazioni utilizzate per il calcolo dei timestamps, potevano essere viste dal codice python presente nello zip DevTools.zip scaricato dal forum. Il problema, e ciò che mi ha creato difficoltà anche a me, era capire quali erano le nazioni da cui si doveva estrarre il timestamp, perché nello script le nazioni erano 5, mentre quelle richieste erano solamente 3, e non cambiavano di volta in volta, ma rimanevano fisse. Inoltre, per riuscire a calcolare i timestamp, sia client che server chiamavano la funzione datetime.now(). Questa funzione calcola il tempo corrente nella macchina dove viene eseguita. Bisognava quindi sincronizzare client e server in modo tale che entrambi avevano lo stesso orario interno. Questa sincronizzazione è stata possibile in quanto la macchina matrix girava anche un server NTP (Network Time Protocol), che però non è apparso sui scan di nmap perché è un servizio esposto in una porta UDP (se uno fa `sudo nmap -sU -p- matrix` si dovrebbe vedere la porta ntp). Questo servizio permette proprio di sincronizzare il tempo tra più macchine. Alla fine durante la macchina ho scoperto che il pre-shared secret key era il valore 792513759492579 (uno dei tre presenti nell’immagine png), mentre le tre nazioni utilizzate per il calcolo dei timestamp erano: Ukraine, Denmark e Nigeria. Quindi, per ricapitolare, l’idea è: - per entrare in ssh mi serve un codice OTP - per calcolare il codice OTP mi serve la pre-shared secret key e il timestamp in 3 particolari regioni del mondo. - una volta che ho tutto questo calcolo l’OTP e mi collego con ssh. NOTA BENE: per fare in modo che i timestamp calcolati dal client corrispondo con quelli calcolati dal server il fuso orario (timezone) tra client e server deve essere uguale. Dato che il server gira con UTC (e purtroppo qui toccava indovinarlo mi sa), dovevamo mettere anche il nostro fuso orario a UTC con il comando ‘sudo timedatectl set-timezone UTC` —————— Spero abbia chiarito un po’. Per quanto riguarda la domanda: sì. Vorrei trattare tutto, in realtà. Prima di iniziare la binary exploitation voglio preparare un video bello potente sui puntatori in C. Anche perché la binary exploitation è strettamente legata alla gestione della memoria, che a sua volta necessita di sapere come funzionano i puntatori. (Sono poco ambizioso, si, lo so.)
    2. @davidebonati342 18 gennaio 2022 1
      @esadecimale grazie per la risposta dettagliata! :)
  2. @nebgames 30 giugno 2022 1
    Complimenti davvero per questi video, sei davvero in gamba. Io sono solo all'inizio del mio percorso di studi, e questi video mi motivano moltissimo nello studio. Grazie bro
    1 risposta
    1. @esadecimale Autore 30 giugno 2022
      Buono studio e buona fortuna!
  3. @youareherenow_DJ 19 gennaio 2022 1
    Grande Leo, sono felice che alla fine ti stai dedicando alla Cyber ;)
  4. @Matrix-nv3nz 19 gennaio 2022 1
    Bravissimo leo sempre Top
  5. @valeiaco9653 8 aprile 2022 1
    Ciao Leo il video e top. Spero che ne farai molti altri come questo su tryhackme. Mi sono perso parecchio nella parte dei binari. Perché il binario io lo provato a decifrarlo in cyberchef e mi è uscito kaymaker e così sono caduto nella rabbit hall ho perso parecchio tempo a capire che dovevo semplicemente aggiungerlo al url nel formato originale. Perché a te non è uscito nulla a decifrarlo?
    1 risposta
    1. @esadecimale Autore 8 aprile 2022 1
      Hey, ho rivisto velocemente la questione e praticamente l’errore qui l’ho fatto io tecnicamente perché nel convertitore binary -> ascii che ho utilizzato dovevo separare ogni sequenza di 8 bit con uno spazio. Io invece ho messo tutti i bit attaccati pensando che l’applicazione facesse lo splitting da sola. Se effettivamente dividi in sequenze di 8 bit e poi traduce ti viene fuori la keyword “Keymaker”. Detto questo, per pura fortuna la strada era proprio quella di utilizzare la stringa binaria in un altro modo e non c’era effettivamente bisogno di effettuare questa traduzione :D
  6. @blackicered 18 gennaio 2022 1
    Ciao👍👍👍👍
  7. @stregone 4 dicembre 2025
    molto interessante. Cosa hai usato nel video per prendere appunti? sembra una specie di blocco note nel terminale ma non ho capito cos'è
    1 risposta
    1. @esadecimale Autore 4 dicembre 2025
      Si chiama Emacs, ho una playlist al riguardo
  8. @meow-v2 23 gennaio 2023
    how much time its taken to bruteforce ssh key ?
    1 risposta
    1. @esadecimale Autore 26 gennaio 2023 1
      The idea is that the ssh password is computed through a custom scheme involving the timestamp on different nations and it changes every minute. So there is no ssh key, but only a One-Time-Password (OTP), which changes every minute. To figure out the correct one you have to guess which combination of nations was used to compute it, and the best way was to explore all the combinations by picking them in a random order
  9. @stefanosternativo8503 18 gennaio 2022 1
    Grazie mille, come sempre. Hai un account social dove possiamo seguirti?
    1 risposta
    1. @esadecimale Autore 20 gennaio 2022 1
      Hey ciao, allora come social ho solamente un piccolo server discord. Per ottenere il link di invito avevo messo qualche mese fa una challenge al sito: https://youtube.leonardotamiano.xyz Se poi hai problemi scrivi pure per email.